folder 0.0.1 → 0.0.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.
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