Module: Mpp::Json

Extended by:
T::Sig
Defined in:
lib/mpp/json.rb

Class Method Summary collapse

Class Method Details

.compact_encode(obj) ⇒ Object



15
16
17
# File 'lib/mpp/json.rb', line 15

def compact_encode(obj)
  ::JSON.generate(deep_sort_keys(obj), space: "", object_nl: "", array_nl: "")
end

.deep_sort_keys(obj) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/mpp/json.rb', line 21

def deep_sort_keys(obj)
  case obj
  when Hash
    obj.sort_by { |k, _| k.to_s }.to_h.transform_values { |v| deep_sort_keys(v) }
  when Array
    obj.map { |v| deep_sort_keys(v) }
  else
    obj
  end
end