class Jt
Constants
- I_LINE
- L_LINE
- SPACE_SIZE
- T_LINE
- VALUES
- VERSION
Public Class Methods
create(text)
click to toggle source
# File lib/jt.rb, line 20 def self.create(text) new(text) end
new(text)
click to toggle source
# File lib/jt.rb, line 24 def initialize(text) object = JSON.parse(text) @queue = [] if object.instance_of?(Hash) @queue << "root\n".colorize(:red) parse(object) elsif text =~ VALUES @queue << "#{output_value(object)}\n" return else raise "Unexpected value #{object.inspect}" end end
Public Instance Methods
to_s()
click to toggle source
# File lib/jt.rb, line 39 def to_s @queue.join end
Private Instance Methods
get_line(end_line: nil, space: '')
click to toggle source
# File lib/jt.rb, line 89 def get_line(end_line: nil, space: '') end_line ? "#{space}#{L_LINE} " : "#{space}#{T_LINE} " end
get_space(end_line: nil)
click to toggle source
# File lib/jt.rb, line 93 def get_space(end_line: nil) end_line ? ' ' * SPACE_SIZE : I_LINE + ' ' * (SPACE_SIZE-1) end
output_value(value)
click to toggle source
# File lib/jt.rb, line 74 def output_value(value) case value.class.to_s when /Hash/ value.inspect when /NilClass/ "null" when /Integer|Fixnum|Float|Bignum/ value.inspect.colorize(:blue) when /TrueClass|FalseClass/ value.inspect.colorize(:blue) else value.inspect.colorize(:green) end end
parse(object, space = '')
click to toggle source
# File lib/jt.rb, line 45 def parse(object, space = '') until object.empty? key, value = object.shift if key.instance_of?(Hash) @queue << get_line(end_line: object.empty?, space: space) @queue << "object\n".colorize(:red) parse(key, space + get_space(end_line: object.empty?)) next end @queue << get_line(end_line: object.empty?, space: space) if value.instance_of?(Hash) && !value.empty? @queue << "#{key.inspect.colorize(:blue)}\n" parse(value, space + get_space(end_line: object.empty?)) elsif value.instance_of?(Array) && !value.empty? @queue << "#{key.inspect.colorize(:blue)}\n" parse(value, space + get_space(end_line: object.empty?)) else if object.instance_of?(Array) @queue << "#{output_value(key)}\n" else @queue << "#{key.inspect.colorize(:blue)}: #{output_value(value)}\n" end end end end