From: Simon Kitching Date: 2003-11-05T09:38:16+09:00 Subject: Managing metadata about attribute types Hi, I'm porting the Apache Jakarta Commons Digester (written in Java) to Ruby at the moment. This module processes xml in a rules-based manner. It is particularly useful for handling complex xml configuration files. However some of the very nice features of this module depend upon being able to introspect a class to find what attributes it has, and what their datatypes are. Finding attributes on a Ruby class is simple (just look for "attr=" methods). Unfortunately, determining what object types it is valid to assign to that attribute is not so simple... I was wondering if there were any other Ruby projects which have faced this problem and come up with solutions? I would rather steal a solution than invent one :-) Example of problem: Input xml is: // java class StockItem { public void setName(String name) {....} public void setCost(float cost) {....} } # Ruby class StockItem attr_accessor :name attr_accessor :cost end In the java version, when the "cost" attribute is encountered in the xml input, it is seen that the target class has a setCost(float) method, so the string "12.50" is converted to a float before invoking the setCost method. I want to achieve the same effect in the Ruby version. I do *not* want to effectively invoke this in ruby: stock_item.cost=('12.50') # string passed Anyone have any references to "pre-existing art"??? Thanks, Simon