While I have your attention

I built a Ruby module for a class recently that’s designed to allow for flexible de/serialization of XML documents into and out of classes. The syntax looks something like this:

class Foo
  include XmlSerializable
  xml_element_name "foo-element"
  xml_has_attributes :id => Integer, :name => String
end

class Bar
  include XmlSerializable
  xml_element_name "bar-element"
  xml_has_children [:foos, [Foo]]
end

For convenience, and because I am both peachy keen and silky smooth:

# Generates a constructor and equality methods.
class Baz < XmlStruct
  xml_element_name "baz-element"
  xml_has_attributes :you_get => Integer, :the_idea => Float
end

The syntax is a little bit odd because of the constraints placed on us for this particular assignment (some very strange, arbitrary, not-really-XML grammar definitions) which is why the children in the example above are defined in an ordered list rather than a hash or something. But that’s easily cleaned up.

I’m thinking of releasing it as a gem, which is not something to which I’m accustomed. Would this be useful to anyone? It’d be cool to be able to define the deserialization grammar and the actions on a class simultaneously–say, for an RssFeed class, with RssItem children. I mean, not that there isn’t already an RSS gem. Because there is. But the idea of it makes me giddy, very much like a schoolchild of either gender.

I have a homepage!

Fun with hosts, virtual and otherwise