Class: Deliver::Loader::LanguageFolder

Inherits:
Object
  • Object
show all
Defined in:
deliver/lib/deliver/loader.rb

Overview

A class that represents language folder under screenshots or metadata folder

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, nested: false) ⇒ LanguageFolder

Returns a new instance of LanguageFolder.

Parameters:

  • path (String)

    A directory path otherwise this initializer fails

  • nested (Boolean) (defaults to: false)

    Whether given path is nested of another special directory. This affects ‘expandable?` to return `false` when this set to `true`.

Raises:

  • (ArgumentError)


46
47
48
49
50
51
# File 'deliver/lib/deliver/loader.rb', line 46

def initialize(path, nested: false)
  raise(ArgumentError, "Given path must be a directory path - #{path}") unless File.directory?(path)
  @path = path
  @language = self.class.available_languages.find { |lang| basename.casecmp?(lang) }
  @nested = nested
end

Instance Attribute Details

#languageString (readonly)

Returns A normalized language name that corresponds to the directory’s name.

Returns:

  • (String)

    A normalized language name that corresponds to the directory’s name



31
32
33
# File 'deliver/lib/deliver/loader.rb', line 31

def language
  @language
end

#pathObject (readonly)

Returns the value of attribute path.



28
29
30
# File 'deliver/lib/deliver/loader.rb', line 28

def path
  @path
end

Class Method Details

.allowed_directory_names_with_caseObject



39
40
41
# File 'deliver/lib/deliver/loader.rb', line 39

def self.allowed_directory_names_with_case
  available_languages + SPECIAL_DIR_NAMES
end

.available_languagesObject



33
34
35
36
37
# File 'deliver/lib/deliver/loader.rb', line 33

def self.available_languages
  # 2020-08-24 - Available locales are not available as an endpoint in App Store Connect
  # Update with Spaceship::Tunes.client.available_languages.sort (as long as endpoint is available)
  Deliver::Languages::ALL_LANGUAGES
end

Instance Method Details

#basenameObject



77
78
79
# File 'deliver/lib/deliver/loader.rb', line 77

def basename
  File.basename(@path)
end

#expandable?Boolean

Returns:



61
62
63
# File 'deliver/lib/deliver/loader.rb', line 61

def expandable?
  !nested? && EXPANDABLE_DIR_NAMES.any? { |name| name.casecmp?(basename) }
end

#file_paths(extensions = '{png,jpg,jpeg}') ⇒ Object



69
70
71
# File 'deliver/lib/deliver/loader.rb', line 69

def file_paths(extensions = '{png,jpg,jpeg}')
  Dir.glob(File.join(path, "*.#{extensions}"), File::FNM_CASEFOLD).sort
end

#framed_file_paths(extensions = '{png,jpg,jpeg}') ⇒ Object



73
74
75
# File 'deliver/lib/deliver/loader.rb', line 73

def framed_file_paths(extensions = '{png,jpg,jpeg}')
  Dir.glob(File.join(path, "*_framed.#{extensions}"), File::FNM_CASEFOLD).sort
end

#nested?Boolean

Returns:



53
54
55
# File 'deliver/lib/deliver/loader.rb', line 53

def nested?
  @nested
end

#skip?Boolean

Returns:



65
66
67
# File 'deliver/lib/deliver/loader.rb', line 65

def skip?
  EXCEPTION_DIRECTORIES.map(&:downcase).include?(basename.downcase)
end

#valid?Boolean

Returns:



57
58
59
# File 'deliver/lib/deliver/loader.rb', line 57

def valid?
  self.class.allowed_directory_names_with_case.any? { |name| name.casecmp?(basename) }
end