folder 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d15b12223bc0da1ff62ea9159966cf6c73ad55ed
4
- data.tar.gz: 8b429003b51a1e811e043dac79d0914d35b11243
3
+ metadata.gz: 9b37a87a7f8797c77d94180fb1e8a132d72beb03
4
+ data.tar.gz: 9f5071b913ae8c3ca6a1896d23dd6e34148a9249
5
5
  SHA512:
6
- metadata.gz: 2f2fe9957211c7c5a0950552d13c5725e5b2e36ebc4c7c94911f8b8ef36e86f0a8082c6d9a34ea30cc21dfb52f1ca42d3536dc8436fb4abc7314ced320b4db2d
7
- data.tar.gz: 17f0eac243efc67f946a209841b93939d082618741b92763eee9ef9523d1ace8fd7d82ff4f3a7cd4f444a55e2d917ed987cd781783e9d459d6b6052d6ea8a653
6
+ metadata.gz: 36d9ddc63cdc8f7bec143219bbef82b1bb5be3430606933e119d97969af9e5556c84274c4db1d0e9aa4ceaa90be0f14b523a22d88e40d959038d22e62b7cae59
7
+ data.tar.gz: fb990149e3cb434886cf42f2b0f10a8388212728b362531a5b19be5b15d14dd7beda08e6c2f65f833673438d1953796806e623bf2fdd502b05c4053af3758b62
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Folder
1
+ # Folder (he said "it's unfold!!!".)
2
2
 
3
- String keys make directory structur
3
+ String keys make directory structure
4
4
 
5
5
  ## Installation
6
6
 
@@ -4,34 +4,31 @@ module Folder
4
4
  DEFAULT_SEPARATOR = '.'.freeze
5
5
 
6
6
  def fold!(separator = DEFAULT_SEPARATOR)
7
- klass = self.class
8
- temp = klass.new
7
+ klass = self.class
8
+ folded = klass.new
9
9
 
10
10
  each do |key, value|
11
- next unless key.is_a?(String) and key.index(separator)
11
+ next unless key.is_a?(String) and key.include?(separator)
12
12
 
13
- *keys, last = key.split(separator, -1)
14
- current = temp
13
+ keys = key.split(separator, -1)
14
+ last = keys.pop
15
15
 
16
- while keys.length != 0
17
- k = keys.shift
18
- current[k] = klass.new unless current[k].is_a?(klass)
19
- current = current[k]
20
- end
16
+ current = keys.reduce(folded) {|memo, item|
17
+ memo[item].is_a?(klass) ?
18
+ memo[item] : (memo[item] = klass.new)
19
+ }
21
20
 
22
21
  current[last] = value unless current[last].is_a?(klass)
23
22
  delete key
24
23
  end
25
24
 
26
- merge! temp
25
+ merge! folded
27
26
  end
28
27
 
29
28
  def fold(separator = DEFAULT_SEPARATOR)
30
- dup.fold! separator
29
+ clone.fold! separator
31
30
  end
32
31
  end
33
32
 
34
- class Hash
35
- include Folder
36
- end
33
+ Hash.__send__(:include, Folder)
37
34
 
@@ -1,3 +1,3 @@
1
1
  module Folder
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -49,7 +49,7 @@ describe Hash, '#fold!' do
49
49
  expect(@hash.fold!).to be(@hash)
50
50
  end
51
51
 
52
- it 'should be fold specified separator' do
52
+ it 'should fold with specified separator' do
53
53
  hash = {
54
54
  'nyan' => true,
55
55
  'ny/an' => true,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: folder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tatat