# Martin Fowler's Reader Framework example from his "Language Workbenches" # and "Generating Code for DSLs" papers. # H. Conrad Cunningham # Original: 10 October 2006 module ReaderUtilities COMMENT = '#' def class_name_only(name) (name.split("."))[-1] end def from_camel(name) name =~ /\A[a-z0-9_]*/ prefix = $& tokens = $'.scan(/[A-Z]+[a-z0-9_]*/) tokens = [prefix] + tokens if prefix != "" tokens = (tokens[0..-2].map {|e| e[-1,1] == "_" ? e : e+"_"}) + tokens[-1..-1] tokens.join.downcase end def is_comment?(line) line[0,1] == COMMENT end def is_blank?(line) line == "" end end#ReaderUtilities