case arr_of_structs.first[attribute]
when Float, Fixnum
out.puts "@attribute #{attribute} NUMERIC"
when String
out.puts "@attribute #{attribute} STRING"
when Array
out.puts "@attribute charges relational"
2.0.step(12, 0.5).each do |ph|
out.puts "@attribute charge_at_#{ph} NUMERIC"
end #ph.each do
out.puts "@end charges"
end #case
end # each do
This was failing because I had previously been comparing the
.class
of the attribute value to the string versions of each class name. This wasn't working, and that becomes clear when I was reminded that case uses the ===
operator for comparison. I don't really understand all the ramifications, but it is kinda explained here: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html