Module: Kumi::Dev::Printer::WidthAwareJson
- Defined in:
- lib/kumi/dev/printer/width_aware_json.rb
Class Method Summary collapse
Class Method Details
.dump(obj, max: 120, indent: 0) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/kumi/dev/printer/width_aware_json.rb', line 9 def dump(obj, max: 120, indent: 0) # First try a compact one-liner one = JSON.generate(obj) return one if one.size <= max case obj when Array items = obj.map { |v| dump(v, max: max, indent: indent + 2) } join_multiline("[", items, "]", indent) when Hash items = obj.map do |k, v| key = JSON.generate(k) val = dump(v, max: max, indent: indent + 2) "#{key}: #{val}" end join_multiline("{", items, "}", indent) else one # scalars just return compact end end |
.join_multiline(open, items, close, indent) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/kumi/dev/printer/width_aware_json.rb', line 30 def join_multiline(open, items, close, indent) pad = " " * (indent + 2) [ open, pad + items.join(",\n" + pad), (" " * indent) + close ].join("\n") end |