class Erubis::Main

def show_properties

def show_properties
  s = "supported properties:\n"
  basic_props = collect_supported_properties(Erubis::Basic::Engine)
  pi_props    = collect_supported_properties(Erubis::PI::Engine)
  list = []
  common_props = basic_props & pi_props
  list << ['(common)', common_props]
  list << ['(basic)',  basic_props - common_props]
  list << ['(pi)',     pi_props    - common_props]
  %w[ruby php c cpp java scheme perl javascript].each do |lang|
    klass = Erubis.const_get("E#{lang}")
    list << [lang, collect_supported_properties(klass) - basic_props]
  end
  list.each do |lang, props|
    s << "  * #{lang}\n"
    props.each do |name, default_val, desc|
      s << ("     --%-23s : %s\n" % ["#{name}=#{default_val.inspect}", desc])
    end
  end
  s << "\n"
  return s
end