ytools 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -85,23 +85,33 @@ module YTools::Path
85
85
  @match = match
86
86
  end
87
87
 
88
- def select(yaml)
89
- inner_select(yaml, [])
88
+ def select(element)
89
+ results = []
90
+ element_select(element, results)
91
+ if results.length == 1
92
+ results[0]
93
+ else
94
+ results
95
+ end
90
96
  end
91
97
 
92
98
  private
93
- def inner_select(yaml, results)
99
+ def element_select(element, results)
100
+ if element.is_a?(YTools::YamlObject)
101
+ hash_select(element, results)
102
+ elsif element.is_a?(Array)
103
+ element.each do |e|
104
+ element_select(e, results)
105
+ end
106
+ end
107
+ end
108
+
109
+ def hash_select(yaml, results)
94
110
  yaml.yhash.each do |key, value|
95
111
  if key == match
96
112
  key_select(value, results)
97
113
  end
98
- value_select(value, results)
99
- end
100
-
101
- if results.length == 1
102
- results[0]
103
- else
104
- results
114
+ element_select(value, results)
105
115
  end
106
116
  end
107
117
 
@@ -116,17 +126,5 @@ module YTools::Path
116
126
  results << value
117
127
  end
118
128
  end
119
-
120
- def value_select(value, results)
121
- if value.is_a?(YTools::YamlObject)
122
- inner_select(value, results)
123
- elsif value.is_a?(Array)
124
- value.each do |v|
125
- if v.is_a?(YTools::YamlObject)
126
- inner_select(v, results)
127
- end
128
- end
129
- end
130
- end
131
129
  end
132
130
  end
@@ -41,5 +41,9 @@ module YTools::Path
41
41
  it "should be able to pull out the keys for a hash" do
42
42
  process('/a', '5.yml').should eql("b\nc\nd")
43
43
  end
44
+
45
+ it "should be able to pull out a descendant selector with inner hashes" do
46
+ process('/a//b', '6.yml').should eql("c\nd\ne")
47
+ end
44
48
  end
45
49
  end
@@ -119,5 +119,16 @@ module YTools::Path
119
119
  found[0].should eql(2)
120
120
  found[1].should eql('b')
121
121
  end
122
+
123
+ it "should be able to pull out a list of subselectors" do
124
+ sel = ChildSelector.new('path')
125
+ sel.chain(DescendantSelector.new('subgroup'))
126
+ o = yo({'path' => [{'subgroup' => 'a', 'c' => 'd'}, {'subgroup' => 'b', 'c' => 'd'}]})
127
+
128
+ found = sel.select(o)
129
+ found.length.should eql(2)
130
+ found[0].should eql('a')
131
+ found[1].should eql('b')
132
+ end
122
133
  end
123
134
  end
@@ -0,0 +1,7 @@
1
+ a:
2
+ - b: c
3
+ quick: brown
4
+ - b: d
5
+ quick: fox
6
+ - b: e
7
+ quick: jumped
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ytools
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gabe McArthur
@@ -75,6 +75,7 @@ files:
75
75
  - spec/path/yamls/3.yml
76
76
  - spec/path/yamls/4.yml
77
77
  - spec/path/yamls/5.yml
78
+ - spec/path/yamls/6.yml
78
79
  - spec/yaml_object_spec.rb
79
80
  has_rdoc: true
80
81
  homepage: http://github.com/gabemc/ytools