yaml-search-diff 0.5.0 → 0.6.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/lib/yaml_search_diff.rb +19 -7
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e354e9c4e84ded8557e8c2e81e2b2d593fecc4d2c43bb40860f61fff8d1984c
4
- data.tar.gz: 991c2647aedd8c768e27b25bdd1c1666acd915a3f18d27f6caa1b4ff28aacd30
3
+ metadata.gz: 43c8d977451539a04e29673ecd6c5fc7b14f2523ddacba5b818dfaaf6d37ab0d
4
+ data.tar.gz: b534be13e379921eee993728ad8018567736542ff31904ebe5ec41c0079b2e41
5
5
  SHA512:
6
- metadata.gz: 11f7371de2a93afb6a1bbdeb661b34bcac376e38d5ca41eb4b75dbed5a92d0d4ec30c6b73aa223348cdb7836161d4d9af452b255d0dd5e931e5eac4903526582
7
- data.tar.gz: e8ac694b6e5c0b87c600b04e436583914a6cde2acbd0daf6e7cfd58c55da3128520864efcd73fbba520343d77ebc23fae23bf5ed26413615f3eca66f064ea71f
6
+ metadata.gz: e7cf20666840ea29c9427b308c527c8f7b9632539f3b6c9c29d5996cb88e4b591a2f180927dc62c1317433ba6e16c8074fc5c44e776e21357ac33a1452368757
7
+ data.tar.gz: 4254b55411edb43987487a5c9d3b5028f9806fbc7640db7873ce1ab66042692ba7ee866b4174e332a66b428b3f2659c6412568d692ef3fee25df8b02e351a8c2
@@ -6,20 +6,32 @@ class YamlSearchDiff
6
6
  def run(key:, yml_1:, yml_2:)
7
7
  return "" unless yml_1.is_a?(Hash) && yml_2.is_a?(Hash)
8
8
 
9
- searched_1 = catch(:has_key) { dfs(yml_1, key) }
10
- searched_2 = catch(:has_key) { dfs(yml_2, key) }
11
-
12
- sorted_1 = sort_yml(searched_1)
13
- sorted_2 = sort_yml(searched_2)
9
+ searched_1 = key.include?(':') ? search_dig(key, yml_1) : search(key, yml_1)
10
+ searched_2 = key.include?(':') ? search_dig(key, yml_2) : search(key, yml_2)
14
11
 
15
12
  Diffy::Diff.new(
16
- YAML.dump(sorted_1),
17
- YAML.dump(sorted_2)
13
+ YAML.dump(searched_1),
14
+ YAML.dump(searched_2)
18
15
  )
19
16
  end
20
17
 
21
18
  private
22
19
 
20
+ def search(key, yml)
21
+ searched = catch(:has_key) { dfs(yml, key) }
22
+ sort_yml(searched)
23
+ end
24
+
25
+ def search_dig(key, yml)
26
+ splitted_keys = key.split(':')
27
+ first_key = splitted_keys.first
28
+
29
+ searched = catch(:has_key) { dfs(yml, first_key) }
30
+ digged = searched.dig(*splitted_keys[1..])
31
+
32
+ sort_yml(digged)
33
+ end
34
+
23
35
  def dfs(hash, key)
24
36
  keys = hash.keys.sort_by(&:to_s)
25
37
  keys.each do |k|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml-search-diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Natsuki Inoue
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-16 00:00:00.000000000 Z
11
+ date: 2021-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diffy