lib/platformos_check/app.rb in platformos-check-0.0.3 vs lib/platformos_check/app.rb in platformos-check-0.1.0
- old
+ new
@@ -37,33 +37,36 @@
USER_SCHEMA_REGEX => UserSchemaFile,
TRANSLATIONS_REGEX => TranslationFile,
CONFIG_REGEX => ConfigFile
}
- attr_reader :storage
+ attr_reader :storage, :grouped_files
def initialize(storage)
@storage = storage
+ @grouped_files = {}
+ REGEXP_MAP.each_value { |v| @grouped_files[v] ||= {} }
+ process_files(storage.files)
end
- def grouped_files
- @grouped_files ||= begin
- hash = {}
- REGEXP_MAP.each_value { |v| hash[v] = {} }
- storage.files.each do |path|
- regexp, klass = REGEXP_MAP.detect { |k, _v| k.match?(path) }
- if regexp
- f = klass.new(path, storage)
- hash[klass][f.name] = f
- elsif /\.liquid$/i.match?(path)
- hash[LiquidFile] ||= {}
- f = LiquidFile.new(path, storage)
- hash[LiquidFile][f.name] = f
- end
+ def update(files, remove: false)
+ process_files(files, remove:)
+ end
+
+ def process_files(files, remove: false)
+ files.each do |path|
+ regexp, klass = REGEXP_MAP.detect { |k, _v| k.match?(path) }
+ next unless regexp
+
+ f = klass.new(path, storage)
+ if remove
+ @grouped_files[klass].delete(f.name)
+ else
+ @grouped_files[klass][f.name] = f
end
- hash
end
+ @grouped_files
end
def assets
grouped_files[AssetFile]&.values
end
@@ -119,18 +122,18 @@
def pages
grouped_files[PageFile]&.values || []
end
def all
- @all ||= grouped_files.values.map(&:values).flatten
+ grouped_files.values.map(&:values).flatten
end
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 }
+ all.find { |t| t.relative_path.to_s == name_or_relative_path }
end
end
end
end