class Dorian::SortJson
Public Class Methods
run()
click to toggle source
# File lib/dorian/sort-json.rb, line 5 def self.run if ARGV[0] == "--help" || ARGV[0] == "-h" puts "USAGE: sort-json FILES..." puts "USAGE: ... | sort-json" exit end inputs = ARGV if inputs.size.zero? inputs = STDIN.each_line.to_a if File.exist?(inputs.first.strip) inputs = inputs.map(&:strip) else inputs = [inputs.join] end end inputs.each do |input| content = File.exist?(input) ? File.read(input) : input json = JSON.pretty_generate(sort_json(JSON.parse(content))) + "\n" File.exist?(input) ? File.write(input, json) : puts(json) end end
sort_json(data)
click to toggle source
# File lib/dorian/sort-json.rb, line 31 def self.sort_json(data) if data.is_a?(Array) data.map { |element| sort_json(element) } elsif data.is_a?(Hash) data .sort_by { |key, _value| key } .to_h .transform_values { |value| sort_json(value) } else data end end