Browse Source

Better parsing of layout files

Handles empty rules and empty files better now.

Fixes #14
dev
Andy Meneely 11 years ago
parent
commit
19808c6464
  1. 4
      lib/squib/deck.rb
  2. 1
      spec/data/layouts/empty-rule.yml
  3. 1
      spec/data/layouts/empty.yml
  4. 12
      spec/deck_spec.rb

4
lib/squib/deck.rb

@ -115,7 +115,7 @@ module Squib
thefile = file
thefile = "#{File.dirname(__FILE__)}/layouts/#{file}" unless File.exists?(file)
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|
@layout[key] = recurse_extends(yml, key, {})
end
@ -157,7 +157,7 @@ module Squib
# :nodoc:
# @api private
def has_extends?(yml, key)
yml[key].key?('extends')
!!yml[key] && yml[key].key?('extends')
end
# Safeguard against malformed circular extends

1
spec/data/layouts/empty-rule.yml

@ -0,0 +1 @@
empty: #no rules actually set

1
spec/data/layouts/empty.yml

@ -0,0 +1 @@
# testing for an empty yaml file here

12
spec/deck_spec.rb

@ -207,6 +207,18 @@ describe Squib::Deck do
})
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

Loading…
Cancel
Save