# 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
