core_extended 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,19 @@ class Hash
2
2
 
3
3
  Inflector = Struct.new :method, :arguments
4
4
 
5
+ def dictionary(parent_key=nil)
6
+ Hash.new.tap do |hash|
7
+ each do |k,v|
8
+ key = [parent_key, k].compact.join('.')
9
+ if v.is_a? Hash
10
+ hash.merge! v.dictionary(key)
11
+ else
12
+ hash[key] = v
13
+ end
14
+ end
15
+ end
16
+ end
17
+
5
18
  def self.inflectors
6
19
  @inflectors ||= []
7
20
  end
@@ -1,3 +1,3 @@
1
1
  module CoreExtended
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
data/spec/hash_spec.rb CHANGED
@@ -113,4 +113,37 @@ describe Hash do
113
113
 
114
114
  end
115
115
 
116
+ describe 'Dictionary' do
117
+
118
+ it 'Simple hash' do
119
+ hash = {key_1: 1, 'key_2' => 'text', key_3: []}
120
+ hash.dictionary.must_equal 'key_1' => 1,
121
+ 'key_2' => 'text',
122
+ 'key_3' => []
123
+ end
124
+
125
+ it 'Nested hashes' do
126
+ hash = {
127
+ key_1: 1,
128
+ 'key_2' => 'text',
129
+ key_3: [],
130
+ key_4: {
131
+ 1 => '4.1',
132
+ 2 => {
133
+ 1 => '4.2.1',
134
+ 2 => '4.2.2'
135
+ }
136
+ }
137
+ }
138
+
139
+ hash.dictionary.must_equal 'key_1' => 1,
140
+ 'key_2' => 'text',
141
+ 'key_3' => [],
142
+ 'key_4.1' => '4.1',
143
+ 'key_4.2.1' => '4.2.1',
144
+ 'key_4.2.2' => '4.2.2'
145
+ end
146
+
147
+ end
148
+
116
149
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: core_extended
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-19 00:00:00.000000000 Z
12
+ date: 2013-09-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -174,18 +174,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
174
  - - ! '>='
175
175
  - !ruby/object:Gem::Version
176
176
  version: '0'
177
- segments:
178
- - 0
179
- hash: 2176153387559094585
180
177
  required_rubygems_version: !ruby/object:Gem::Requirement
181
178
  none: false
182
179
  requirements:
183
180
  - - ! '>='
184
181
  - !ruby/object:Gem::Version
185
182
  version: '0'
186
- segments:
187
- - 0
188
- hash: 2176153387559094585
189
183
  requirements: []
190
184
  rubyforge_project:
191
185
  rubygems_version: 1.8.25