dorian-json-map 0.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/json-map +37 -6
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e140b3765851794fd76dc5d3e5b167ff4f4adb8c23ed8308c6e6c11fd40ab4ac
4
- data.tar.gz: eccf859335d5fa6adc3dbb5616ae2c84a8cd02fa602ee8b5421377dde1afd9bd
3
+ metadata.gz: 534701a1cc9cd3da9481b7930be00262d1b8878824926e6f907bb7c1a8331164
4
+ data.tar.gz: a0ac2365340b69d52968960657ead43dc7dbe8dc19b4d2882b9bba2e89c06ff1
5
5
  SHA512:
6
- metadata.gz: 02cd88f5a747e9d259f8343d85676fb3b521bac3e49f069e009d1458563c0beb8325f485566cd1587ee1f8c980b899ac9e9945382d4fb76a0f7666aca322efa3
7
- data.tar.gz: 0efc51d914322f2685466b11666c88e5ecb24f31bb5c17f17bd36ad2f6ea703d3e1a09e4ae5922b7be7371e3c9bcb2c307df5c518d405610b24b4d0dc83ef6b6
6
+ metadata.gz: e8586dc3e2ecbd0e0672aec29052db8fed6d71929bc1cf93dafebb14e61774bfcd8868794da1c8d035b0a75775027853cb83e920607ea6ea63705826acd58a53
7
+ data.tar.gz: 49bda697f4deaa779af60db3c58855bbf907118c4c2bc894144c7caf3649ebb916f0c8e65527ab18516dd6b8cd6b0dd8927ac12019b3004dc56bf22c8b4bb1c6
data/bin/json-map CHANGED
@@ -1,12 +1,43 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- if ARGV.size != 1 || ARGV[0] == "--help" || ARGV[0] == "-h"
5
- puts "USAGE: ... | each CODE"
6
- exit
4
+ require "dorian/arguments"
5
+ require "dorian/to_struct"
6
+ require "json"
7
+
8
+ parsed = Dorian::Arguments.parse(version: { alias: :v }, help: { alias: :h })
9
+
10
+ abort parsed.help if parsed.options.help
11
+
12
+ if parsed.options.version
13
+ abort File.read(File.expand_path("../../VERSION", __FILE__))
7
14
  end
8
15
 
9
- $stdin.each_line do |it|
10
- it.strip!
11
- eval(ARGV.first)
16
+ inputs = parsed.files.map { |file| File.read(file) }
17
+ inputs = [$stdin.each_line.to_a.map(&:strip).join("\n")] if inputs.empty?
18
+
19
+ inputs.each do |input|
20
+ json = JSON.parse(input)
21
+
22
+ if json.is_a?(Hash)
23
+ result =
24
+ json.to_h do |key, value|
25
+ it = { key.dup => value.dup }.to_deep_struct
26
+ eval(parsed.arguments.join(" "))
27
+ it.from_deep_struct.to_a.first
28
+ end
29
+ elsif json.is_a?(Array)
30
+ result =
31
+ json.map do |it|
32
+ it = it.dup.to_deep_struct
33
+ eval(parsed.arguments.join(" "))
34
+ it.from_deep_struct
35
+ end
36
+ else
37
+ it = json.dup.to_deep_struct
38
+ eval(parsed.arguments.join(" "))
39
+ result = it.from_deep_struct
40
+ end
41
+
42
+ puts JSON.pretty_generate(result)
12
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorian-json-map
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.1.0
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-08-22 00:00:00.000000000 Z
11
+ date: 2024-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json