YALTools::ProcJson module is a collection of methods related to the JSON processing.
In the future, each method will be migrated into corresponding class method.
Please see the following example.
exclude_value_from_json({“_id”=>“x”, “_rev”=>“y”, “name”=>“z”}, [“_rev”]) #=> {“_id”=>“x”,“name”=>“z”}
# File yalt/procjson.rb, line 29
29: def exclude_value_from_json(json, labels)
30: ret = {}
31: json.each do |k,v|
32: ret[k] = v
33: ret.delete(k) if labels.index(k.to_s) != nil
34: end
35: return ret
36: end
returns true or false.
It is a wrapper method against the grep_json_p method. This method handles the multiple patterns as pattern_list.
# File yalt/procjson.rb, line 110
110: def grep_json(json, pattern_list, regexp_flag, ignore_case_flag)
111: ret = false
112: ret_flags = Array.new(pattern_list.size).map do |i| false ; end
113: pattern_list.each_index do |i|
114: ret_flags[i] = grep_json_p(json.clone, pattern_list[i].clone, regexp_flag, ignore_case_flag)
115: end
116: ret = true if ret_flags.index(false) == nil
117: return ret
118: end
returns true or false. If the json contains the pattern sequence, then it returns true.
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2"], false, false) #=> true
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","K3","value"], false, false) #=> true
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","k3"], false, false) #=> false
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","k3"], true, false) #=> true
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","k3"], false, true) #=> true
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","^K"], true, true) #=> true
# File yalt/procjson.rb, line 53
53: def grep_json_p(json, pattern, regexp_flag, ignore_case_flag)
54: ret = false
55: go_next = true
56: rest_json = {}
57: pat = (pattern != nil) ? pattern.shift : nil
58: ks = json.kind_of?(Hash) ? json.keys : [json] ## [json] means the leaf of json tree.
59:
60: ## check the pattern
61: case regexp_flag
62: when true
63: ks.each do |k|
64: case ignore_case_flag
65: when true
66: if k =~ /#{pat}/
67: ret = true
68: rest_json = json[k]
69: end
70: when false
71: if k =~ /#{pat}/
72: ret = true
73: rest_json = json[k]
74: end
75: end
76: end
77: when false
78: case ignore_case_flag
79: when true
80: ks.each do |k|
81: if k.upcase == pat.upcase
82: ret = true
83: rest_json = json[k]
84: end
85: end
86: when false
87: if ks.index(pat) != nil
88: ret = true
89: rest_json = json[pat]
90: end
91: end
92: end
93:
94: return ret if pattern == []
95:
96: if json.kind_of?(Hash)
97: ret = grep_json_p(rest_json, pattern, regexp_flag, ignore_case_flag)
98: else
99: ret = false
100: end
101: return ret
102: end
Please see the following example.
select_value_from_json({“_id”=>“x”, “_rev”=>“y”, “name”=>“z”}, [“_id”,“name”]) #=> {“_id”=>“x”,“name”=>“z”}
# File yalt/procjson.rb, line 17
17: def select_value_from_json(json, labels)
18: ret = {}
19: labels.each do |label|
20: ret[label] = json[label] if json.has_key?(label)
21: end
22: ret
23: end
Please see the following example.
exclude_value_from_json({“_id”=>“x”, “_rev”=>“y”, “name”=>“z”}, [“_rev”]) #=> {“_id”=>“x”,“name”=>“z”}
# File yalt/procjson.rb, line 29
29: def exclude_value_from_json(json, labels)
30: ret = {}
31: json.each do |k,v|
32: ret[k] = v
33: ret.delete(k) if labels.index(k.to_s) != nil
34: end
35: return ret
36: end
returns true or false.
It is a wrapper method against the grep_json_p method. This method handles the multiple patterns as pattern_list.
# File yalt/procjson.rb, line 110
110: def grep_json(json, pattern_list, regexp_flag, ignore_case_flag)
111: ret = false
112: ret_flags = Array.new(pattern_list.size).map do |i| false ; end
113: pattern_list.each_index do |i|
114: ret_flags[i] = grep_json_p(json.clone, pattern_list[i].clone, regexp_flag, ignore_case_flag)
115: end
116: ret = true if ret_flags.index(false) == nil
117: return ret
118: end
returns true or false. If the json contains the pattern sequence, then it returns true.
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2"], false, false) #=> true
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","K3","value"], false, false) #=> true
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","k3"], false, false) #=> false
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","k3"], true, false) #=> true
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","k3"], false, true) #=> true
grep_json_p({"k1"=>{"k2"=>{"K3"=>"value"}}}, ["k1","k2","^K"], true, true) #=> true
# File yalt/procjson.rb, line 53
53: def grep_json_p(json, pattern, regexp_flag, ignore_case_flag)
54: ret = false
55: go_next = true
56: rest_json = {}
57: pat = (pattern != nil) ? pattern.shift : nil
58: ks = json.kind_of?(Hash) ? json.keys : [json] ## [json] means the leaf of json tree.
59:
60: ## check the pattern
61: case regexp_flag
62: when true
63: ks.each do |k|
64: case ignore_case_flag
65: when true
66: if k =~ /#{pat}/
67: ret = true
68: rest_json = json[k]
69: end
70: when false
71: if k =~ /#{pat}/
72: ret = true
73: rest_json = json[k]
74: end
75: end
76: end
77: when false
78: case ignore_case_flag
79: when true
80: ks.each do |k|
81: if k.upcase == pat.upcase
82: ret = true
83: rest_json = json[k]
84: end
85: end
86: when false
87: if ks.index(pat) != nil
88: ret = true
89: rest_json = json[pat]
90: end
91: end
92: end
93:
94: return ret if pattern == []
95:
96: if json.kind_of?(Hash)
97: ret = grep_json_p(rest_json, pattern, regexp_flag, ignore_case_flag)
98: else
99: ret = false
100: end
101: return ret
102: end
Please see the following example.
select_value_from_json({“_id”=>“x”, “_rev”=>“y”, “name”=>“z”}, [“_id”,“name”]) #=> {“_id”=>“x”,“name”=>“z”}
# File yalt/procjson.rb, line 17
17: def select_value_from_json(json, labels)
18: ret = {}
19: labels.each do |label|
20: ret[label] = json[label] if json.has_key?(label)
21: end
22: ret
23: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.