Method: JSON2Ruby::RubyWriter.to_code

Defined in:
lib/json2ruby/ruby_writer.rb

.to_code(entity, indent = 0, options = {}) ⇒ Object

Return a String containing a Ruby class/module definition for the given Entity. Optionally, supply indent to set the indent of the generated code in spaces, and supply a Hash of options as follows:

  • :modules - Boolean if true, generate Ruby module files instead of classes.

  • :require - Array of String items, each of which will generate a ‘require ’<x>‘` statement for each item

  • :superclass_name - String, if supplied, the superclass of the class to geneerate

  • :extend - Array of String items, each of which will generate a ‘extend ’<x>‘` statement for each item in the class

  • :include - Array of String items, each of which will generate a ‘include ’<x>‘` statement for each item in the class



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/json2ruby/ruby_writer.rb', line 16

def self.to_code(entity, indent = 0, options = {})
  x = ""
  if options.has_key?(:require)
    options[:require].each { |r| x += "require '#{r}'\r\n" }
    x += "\r\n"
  end
  idt = (' '*indent)
  x += "#{(' '*indent)}#{options[:modules] ? "module" : "class"} #{entity.name}"
  x += " < #{options[:superclass_name]}" if options.has_key?(:superclass_name)
  x += "\r\n"
  if options.has_key?(:extend)
    options[:extend].each { |r| x += "#{(' '*(indent+2))}extend #{r}\r\n" }
    x += "\r\n"
  end
  if options.has_key?(:include)
    options[:include].each { |r| x += "#{(' '*(indent+2))}include #{r}\r\n" }
    x += "\r\n"
  end
  x += attributes_to_ruby(entity, indent+2, options)
  x += "#{(' '*indent)}end\r\n"
  x
end