dorian-sort-json 0.4.1 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sort-json +35 -2
  3. metadata +3 -4
  4. data/lib/dorian/sort-json.rb +0 -47
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf9b0042976b5aae24287008ac779c91e1f7cc07e552b0c88a84057277302923
4
- data.tar.gz: 9b19afe31fdadbf4577002fb7520e22be5216950633df8ca7c97ec4672bbb220
3
+ metadata.gz: d59f00d91a878154a131bf437d80ebd1093d08a0f0f7944afa2dd2b6ed4941fa
4
+ data.tar.gz: e118ca7c533c2d21685868c54ce08210d92daac6e77a25296a5a0833c73302ac
5
5
  SHA512:
6
- metadata.gz: 49443a56012530f9a6ecaaca2ca7b6774b6282581ab4a76f860ba70f1e614488f213205022d394fbe985fca29e403a63dd1712402d3909c5adfb8e8f5fb48a65
7
- data.tar.gz: 147f9d9f546088085336faf909e3ad713c7040727d6e34e67b054e9deb7b20dbae30baa6f1c1ed436262ad08a05a14036d528e3c99b941c1e639603be2966fa1
6
+ metadata.gz: 82d7cb4f8c460b07d6201ac948e60436379c2ee27dbe303cb1c2d1b2bc7ce63c93ac493f607307579e995257d9113e1cdb3c530c68431d0ebacebf05a49d2edd
7
+ data.tar.gz: 7911fdb7ab63cbe19e66634fef3d82c5a8334e9a9f74183d59d9d558f3632c3dfa34d386ce6133ff83ca53195202ac958476bd0175bd02214282907a79fbb1d8
data/bin/sort-json CHANGED
@@ -1,5 +1,38 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require "dorian/sort-json"
5
- Dorian::SortJson.run
4
+ require "json"
5
+
6
+ def sort_json(data)
7
+ if data.is_a?(Array)
8
+ data.map { |element| sort_json(element) }
9
+ elsif data.is_a?(Hash)
10
+ data
11
+ .sort_by { |key, _value| key }
12
+ .to_h
13
+ .transform_values { |value| sort_json(value) }
14
+ else
15
+ data
16
+ end
17
+ end
18
+
19
+ if ARGV[0] == "--help" || ARGV[0] == "-h"
20
+ puts "USAGE: sort-json FILES..."
21
+ puts "USAGE: ... | sort-json"
22
+ exit
23
+ end
24
+
25
+ inputs = ARGV
26
+
27
+ if inputs.empty?
28
+ inputs = $stdin.each_line.to_a
29
+
30
+ inputs =
31
+ (File.exist?(inputs.first.strip) ? inputs.map(&:strip) : [inputs.join])
32
+ end
33
+
34
+ inputs.each do |input|
35
+ content = File.exist?(input) ? File.read(input) : input
36
+ json = "#{JSON.pretty_generate(sort_json(JSON.parse(content)))}\n"
37
+ File.exist?(input) ? File.write(input, json) : puts(json)
38
+ end
metadata CHANGED
@@ -1,27 +1,26 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorian-sort-json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-08 00:00:00.000000000 Z
11
+ date: 2024-04-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  Sorts keys of hashes of JSON files
15
15
 
16
16
  e.g. `sort-json package.json`
17
- email: dorian@dorianmarie.fr
17
+ email: dorian@dorianmarie.com
18
18
  executables:
19
19
  - sort-json
20
20
  extensions: []
21
21
  extra_rdoc_files: []
22
22
  files:
23
23
  - bin/sort-json
24
- - lib/dorian/sort-json.rb
25
24
  homepage: https://github.com/dorianmariecom/sort-json
26
25
  licenses:
27
26
  - MIT
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "json"
4
-
5
- module Dorian
6
- class SortJson
7
- def self.run
8
- if ARGV[0] == "--help" || ARGV[0] == "-h"
9
- puts "USAGE: sort-json FILES..."
10
- puts "USAGE: ... | sort-json"
11
- exit
12
- end
13
-
14
- inputs = ARGV
15
-
16
- if inputs.empty?
17
- inputs = $stdin.each_line.to_a
18
-
19
- inputs =
20
- if File.exist?(inputs.first.strip)
21
- inputs.map(&:strip)
22
- else
23
- [inputs.join]
24
- end
25
- end
26
-
27
- inputs.each do |input|
28
- content = File.exist?(input) ? File.read(input) : input
29
- json = "#{JSON.pretty_generate(sort_json(JSON.parse(content)))}\n"
30
- File.exist?(input) ? File.write(input, json) : puts(json)
31
- end
32
- end
33
-
34
- def self.sort_json(data)
35
- if data.is_a?(Array)
36
- data.map { |element| sort_json(element) }
37
- elsif data.is_a?(Hash)
38
- data
39
- .sort_by { |key, _value| key }
40
- .to_h
41
- .transform_values { |value| sort_json(value) }
42
- else
43
- data
44
- end
45
- end
46
- end
47
- end