class Shaun::PrettyPrinter
The SHAUN pretty printer. It prints a SHAUN value so that it is easy to read
Public Class Methods
new(tabchar = ' ')
click to toggle source
Create a pretty printer with the tabulation string (2 spaces by default)
# File lib/prettyprinter.rb, line 5 def initialize(tabchar = ' ') @tab = tabchar @indent_level = 0 end
Public Instance Methods
dedent()
click to toggle source
remove a level of indentation
# File lib/prettyprinter.rb, line 16 def dedent @indent_level = @indent_level - 1 end
indent()
click to toggle source
Add a level of indentation
# File lib/prettyprinter.rb, line 11 def indent @indent_level = @indent_level + 1 end
indent_string()
click to toggle source
Get the indentation string
# File lib/prettyprinter.rb, line 21 def indent_string @tab * @indent_level end
print_bool(b)
click to toggle source
Pretty print a boolean
# File lib/prettyprinter.rb, line 31 def print_bool(b) b.to_s end
print_list(ary)
click to toggle source
Pretty print a list
# File lib/prettyprinter.rb, line 46 def print_list(ary) indent contents = ary.map { |e| print_list_element e }.join "\n" dedent "[\n" + contents + "\n" + indent_string + "]" end
print_nil()
click to toggle source
Pretty print a null value
# File lib/prettyprinter.rb, line 41 def print_nil "null" end
print_number(sn_num)
click to toggle source
Pretty print a number
# File lib/prettyprinter.rb, line 26 def print_number(sn_num) sn_num.to_s end
print_object(obj)
click to toggle source
Pretty print an object
# File lib/prettyprinter.rb, line 54 def print_object(obj) indent attributes = obj.instance_variables.map do |name| value = obj.instance_variable_get name attr_name = name.to_s.sub /@/, '' print_object_attribute attr_name, value end contents = attributes.join "\n" dedent "{\n" + contents + "\n" + indent_string + "}" end
print_string(s)
click to toggle source
Pretty print a string
# File lib/prettyprinter.rb, line 36 def print_string(s) "\"#{s}\"" end
Private Instance Methods
print_list_element(elem)
click to toggle source
# File lib/prettyprinter.rb, line 74 def print_list_element(elem) indent_string + elem.pretty_print(self) end
print_object_attribute(name, value)
click to toggle source
# File lib/prettyprinter.rb, line 69 def print_object_attribute(name, value) contents = "#{name}: #{value.pretty_print(self)}" indent_string + contents end