class Flueconf::Serializer
Public Class Methods
serialize(obj, options = {})
click to toggle source
# File lib/flueconf/serializer.rb, line 5 def serialize(obj, options = {}) indent = options[:indent] indent = 2 unless indent.is_a? Integer and indent >= 0 dump(obj, [], indent, 0) end
Private Class Methods
dump(obj, keys = [], indent = 0, depth = 0)
click to toggle source
# File lib/flueconf/serializer.rb, line 14 def dump(obj, keys = [], indent = 0, depth = 0) prefix = ' ' * indent * depth key = keys.empty? ? nil : keys.join(' ') case obj when Array obj.map do |v| send(__method__, v, [key], indent, depth) end.compact.join("\n") when Hash compacted = keys.empty? || (!obj.empty? && obj.values.all? { |v| v.is_a? Hash }) str = obj.map do |k, v| k = k.to_s.strip send(__method__, v, (compacted ? (keys + [k]) : [k]), indent, (compacted ? depth : depth + 1)) end.compact.join("\n") compacted ? str : "#{prefix}<#{key}>\n" + (str.empty? ? '' : "#{str}\n") + "#{prefix}</#{keys.first}>" when Numeric, TrueClass, FalseClass (key ? "#{prefix}#{key} " : '') + obj.inspect when NilClass key ? "#{prefix}#{key}" : nil when Regexp (key ? "#{prefix}#{key} " : '') + obj.to_s else (key ? "#{prefix}#{key} " : '') + (/["#]/.match?(obj) ? obj.to_s.to_json : obj.to_s) end end