Class: ThemeCheck::Theme

Inherits:
Object
  • Object
show all
Defined in:
lib/theme_check/theme.rb

Constant Summary collapse

DEFAULT_LOCALE_REGEXP =
%r{^locales/(.*)\.default$}
LIQUID_REGEX =
/\.liquid$/i
JSON_REGEX =
/\.json$/i

Instance Method Summary collapse

Constructor Details

#initialize(storage) ⇒ Theme

Returns a new instance of Theme.



10
11
12
# File 'lib/theme_check/theme.rb', line 10

def initialize(storage)
  @storage = storage
end

Instance Method Details

#[](name_or_relative_path) ⇒ Object



55
56
57
58
59
60
61
62
# File 'lib/theme_check/theme.rb', line 55

def [](name_or_relative_path)
  case name_or_relative_path
  when Pathname
    all.find { |t| t.relative_path == name_or_relative_path }
  else
    all.find { |t| t.name == name_or_relative_path }
  end
end

#allObject



51
52
53
# File 'lib/theme_check/theme.rb', line 51

def all
  @all ||= json + liquid + assets
end

#assetsObject



14
15
16
17
18
# File 'lib/theme_check/theme.rb', line 14

def assets
  @assets ||= @storage.files
    .select { |path| path.start_with?("assets/") }
    .map { |path| AssetFile.new(path, @storage) }
end

#default_localeObject



43
44
45
46
47
48
49
# File 'lib/theme_check/theme.rb', line 43

def default_locale
  if default_locale_json
    default_locale_json.name[DEFAULT_LOCALE_REGEXP, 1]
  else
    "en"
  end
end

#default_locale_jsonObject



36
37
38
39
40
41
# File 'lib/theme_check/theme.rb', line 36

def default_locale_json
  return @default_locale_json if defined?(@default_locale_json)
  @default_locale_json = json.find do |json_file|
    json_file.name.match?(DEFAULT_LOCALE_REGEXP)
  end
end

#directoriesObject



32
33
34
# File 'lib/theme_check/theme.rb', line 32

def directories
  @storage.directories
end

#jsonObject



26
27
28
29
30
# File 'lib/theme_check/theme.rb', line 26

def json
  @json ||= @storage.files
    .select { |path| JSON_REGEX.match?(path) }
    .map { |path| JsonFile.new(path, @storage) }
end

#liquidObject



20
21
22
23
24
# File 'lib/theme_check/theme.rb', line 20

def liquid
  @liquid ||= @storage.files
    .select { |path| LIQUID_REGEX.match?(path) }
    .map { |path| Template.new(path, @storage) }
end

#sectionsObject



68
69
70
# File 'lib/theme_check/theme.rb', line 68

def sections
  liquid.select(&:section?)
end

#snippetsObject



72
73
74
# File 'lib/theme_check/theme.rb', line 72

def snippets
  liquid.select(&:snippet?)
end

#templatesObject



64
65
66
# File 'lib/theme_check/theme.rb', line 64

def templates
  liquid.select(&:template?)
end