lib/frameit/config_parser.rb in frameit-2.0.1 vs lib/frameit/config_parser.rb in frameit-2.1.0
- old
+ new
@@ -39,15 +39,18 @@
# Use absolute paths instead of relative
def change_paths_to_absolutes!(values)
values.each do |key, value|
if value.kind_of?Hash
change_paths_to_absolutes!(value) # recursive call
+ elsif value.kind_of?Array
+ value.each do |current|
+ change_paths_to_absolutes!(current) if current.kind_of?Hash # recursive call
+ end
else
if ['font', 'background'].include?key
# Change the paths to relative ones
# `replace`: to change the content of the string, so it's actually stored
-
if @path # where is the config file. We don't have a config file in tests
containing_folder = File.expand_path('..', @path)
value.replace File.join(containing_folder, value)
end
end
@@ -61,9 +64,19 @@
if value.kind_of?Hash
validate_values(value) # recursive call
else
if key == 'font'
raise "Could not find font at path '#{File.expand_path(value)}'" unless File.exists?value
+ end
+
+ if key == 'fonts'
+ raise "`fonts` must be an array" unless value.kind_of?Array
+
+ value.each do |current|
+ raise "You must specify a font path" if current.fetch('font', '').length == 0
+ raise "Could not find font at path '#{File.expand_path(current.fetch('font'))}'" unless File.exists?current.fetch('font')
+ raise "`supported` must be an array" unless current.fetch('supported', []).kind_of?Array
+ end
end
if key == 'background'
raise "Could not find background image at path '#{File.expand_path(value)}'" unless File.exists?value
end
\ No newline at end of file