Skip to content

Instantly share code, notes, and snippets.

@grantr
Created March 23, 2012 00:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grantr/2165709 to your computer and use it in GitHub Desktop.
Save grantr/2165709 to your computer and use it in GitHub Desktop.
saxaphone bug take 2
require 'rubygems'
require 'saxaphone'
require 'stringio'
class Location < Saxaphone::Element
has_element 'categories', 'Categories' do |element|
puts "categories element #{element.categories.inspect}"
attributes['categories'] = element.categories
end
end
class Categories < Saxaphone::Element
attr_reader :categories
has_element 'category', 'Category' do |element|
puts "category element #{element.category_name}"
@categories ||= []
@categories << element.category_name
end
end
class Category < Saxaphone::Element
store_attributes %w( name )
def category_name
puts "category name #{attributes['name']}"
attributes['name']
end
end
xml = StringIO.new %{<?xml version="1.0" encoding="utf-8"?>
<location>
<categories>
<category parentid="1738" parent="Global" nameid="11361" name="MasterCard">
<group groupid="152" name="Payment Methods"/>
</category>
<category parentid="6064" parent="Home Improvement Stores" nameid="6068" name="Hardware"/>
<category parentid="1434" parent="Outdoor Living Sales" nameid="1436" name="Lawn &amp; Garden Sales"/>
<category parentid="1534" parent="Tool &amp; Hardware Sales" nameid="1538" name="Lawn &amp; Garden Tool Sales"/>
<category parentid="1738" parent="Global" nameid="11349" name="Discover">
<group groupid="152" name="Payment Methods"/>
</category>
<category parentid="2000" parent="Tools" nameid="2002" name="Hand Tools"/>
<category parentid="1987" parent="Home Improvement Stores" nameid="2003" name="Paint"/>
<category parentid="1738" parent="Global" nameid="11382" name="Visa">
<group groupid="152" name="Payment Methods"/>
</category>
<category parentid="1988" parent="Building Materials" nameid="6024" name="Plumbing Supplies"/>
<category parentid="1738" parent="Global" nameid="11333" name="American Express">
<group groupid="152" name="Payment Methods"/>
</category>
<category parentid="1987" parent="Home Improvement Stores" nameid="1999" name="Hardware"/>
<category parentid="1999" parent="Hardware" nameid="2000" name="Tools"/>
</categories>
</location>
}
class SubLocation < Location
end
# this produces no output
puts "SubLocation..."
SubLocation.parse(xml)
# this does produce output
puts "Location..."
xml.rewind
#Location.parse(xml)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment