Better parsing of layout files
Handles empty rules and empty files better now. Fixes #14
This commit is contained in:
+2
-2
@@ -115,7 +115,7 @@ module Squib
|
|||||||
thefile = file
|
thefile = file
|
||||||
thefile = "#{File.dirname(__FILE__)}/layouts/#{file}" unless File.exists?(file)
|
thefile = "#{File.dirname(__FILE__)}/layouts/#{file}" unless File.exists?(file)
|
||||||
if File.exists? thefile
|
if File.exists? thefile
|
||||||
yml = @layout.merge(YAML.load_file(thefile))
|
yml = @layout.merge(YAML.load_file(thefile) || {}) #load_file returns false on empty file
|
||||||
yml.each do |key, value|
|
yml.each do |key, value|
|
||||||
@layout[key] = recurse_extends(yml, key, {})
|
@layout[key] = recurse_extends(yml, key, {})
|
||||||
end
|
end
|
||||||
@@ -157,7 +157,7 @@ module Squib
|
|||||||
# :nodoc:
|
# :nodoc:
|
||||||
# @api private
|
# @api private
|
||||||
def has_extends?(yml, key)
|
def has_extends?(yml, key)
|
||||||
yml[key].key?('extends')
|
!!yml[key] && yml[key].key?('extends')
|
||||||
end
|
end
|
||||||
|
|
||||||
# Safeguard against malformed circular extends
|
# Safeguard against malformed circular extends
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
empty: #no rules actually set
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
# testing for an empty yaml file here
|
||||||
@@ -207,6 +207,18 @@ describe Squib::Deck do
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'loads nothing on an empty layout file' do
|
||||||
|
d = Squib::Deck.new(layout: layout_file('empty.yml'))
|
||||||
|
expect(d.layout).to eq({})
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'handles extends on a rule with no args' do
|
||||||
|
d = Squib::Deck.new(layout: layout_file('empty-rule.yml'))
|
||||||
|
expect(d.layout).to eq({
|
||||||
|
'empty' => nil
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user