mogrify 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.
Files changed (3) hide show
  1. checksums.yaml +6 -14
  2. data/lib/mogrify.rb +25 -13
  3. metadata +9 -6
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OTAwN2I1MjgxZjNjMGYxN2U5MmM1OTQxMGE1ZjgzOTMyZmZjOThlOA==
5
- data.tar.gz: !binary |-
6
- ODkyNzQ1ODc2N2U1MzVkMDAxMzAxM2EwZDJmMjQ5YjI1MWZkNjdiYw==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- ZmM4Y2QxMTY3ZmI2MGMzN2IwN2NhNmUwMTljMTMwODY1NDBhOTAwMTU1NzM0
10
- NmZmZDljMDI2YTFkNzFlMzk5MWQ3YzhhYzAwYmI3NTY1N2I2ZTc0OTVlZTg2
11
- MTZmMTdjZGEzNjhjOGFlMDcwODcxZTY3MWI4Y2RmNDAxYmY0MmQ=
12
- data.tar.gz: !binary |-
13
- ZDk5OTdmYTlhNGJkOTk2NmE3MDgxOTY2ZjllNTVjMWE2N2FmZGI3MzFhZDc0
14
- NjBjODFjMjg0OGNjYTE0MWNmNmRmZjdmZTExOWE2NzhmOWIwMzg3YjNjOTE5
15
- MWY1YTYxZGQ0MmE4NjA4OGNmYzVhZWI0MmVlYmQzMjk4YzYxNzc=
2
+ SHA1:
3
+ metadata.gz: 6b3ac2c0d76ff86d03e41c7cbba4e6c4dd4c3b08
4
+ data.tar.gz: 7c46aa9c99dc86125708b2d5d0e7bae183268ea1
5
+ SHA512:
6
+ metadata.gz: f47c4feaab3d5194bd4002eaea0e0a661b32c87fb612774c74c5eca4a9093148f0ae2af6c263c01239cb471a0532096f1eb254a3730eb4f581a4f0c9f1d83d5f
7
+ data.tar.gz: ee04a881c47fb431a4bb2498586d02be2ea26f5693cb8a785eced9805f82ff3933af81a1cffb6b53de7440ca89b38dee37fe83f03a199ee1c3e97c185110133a
@@ -1,19 +1,18 @@
1
- require "minitest/autorun"
2
1
  class Hash
3
2
  def symogriform
4
3
  symogriformed = {}
5
- symogrified = self
6
- symogrified.keys.each do |key|
7
- if symogrified[key].is_a?(Hash)
8
- symogrified[key] = symogrified[key].symogriform
9
- end
4
+ self.each do |key, value|
5
+ symogriformed[symog(key)] = value.is_a?(Hash) ? value.symogriform : value
10
6
  end
11
- symogriformed.merge!(symogrify(symogrified))
12
7
  symogriformed
13
8
  end
14
9
 
15
- def symogrify part
16
- part.keys.inject({}){|hash, key| hash.merge({symog(key) => part[key]})}
10
+ def symogrify
11
+ symogrified = {}
12
+ self.each do |key, value|
13
+ symogrified[symog(key)] = value
14
+ end
15
+ symogrified
17
16
  end
18
17
 
19
18
  def symog key
@@ -25,11 +24,24 @@ module Enumerable
25
24
  def hashmogrify(&block)
26
25
  hash = {}
27
26
  self.each do |e|
28
- result = block.call(e)
29
- if result.is_a?(Array)
30
- hash[result[0]] = result[1]
27
+ key, value = [*block.call(e), e]
28
+ hash[key] = value
29
+ end
30
+ hash
31
+ end
32
+
33
+ def hashmogrificate(&block)
34
+ hash = {}
35
+ known_keys = []
36
+ self.each do |e|
37
+ key, value = [*block.call(e), e]
38
+ if known_keys.include? key
39
+ hash[key] << value
40
+ elsif hash[key]
41
+ hash[key] = [hash[key]] << value
42
+ known_keys << key
31
43
  else
32
- hash[result] = e
44
+ hash[key] = value
33
45
  end
34
46
  end
35
47
  hash
metadata CHANGED
@@ -1,16 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mogrify
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
  - J. Paul Daigle
8
+ - Dan Tao
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
  date: 2011-09-29 00:00:00.000000000 Z
12
13
  dependencies: []
13
- description:
14
+ description: Mogrify is a tiny library of non-destructive transformers for enumerables,
15
+ including symogrify with symbolizes strings and hashmogrify which builds hashes
16
+ from arrays.
14
17
  email: j.paul.daigle@gmail.com
15
18
  executables: []
16
19
  extensions: []
@@ -26,18 +29,18 @@ require_paths:
26
29
  - lib
27
30
  required_ruby_version: !ruby/object:Gem::Requirement
28
31
  requirements:
29
- - - ! '>='
32
+ - - ">="
30
33
  - !ruby/object:Gem::Version
31
34
  version: '0'
32
35
  required_rubygems_version: !ruby/object:Gem::Requirement
33
36
  requirements:
34
- - - ! '>='
37
+ - - ">="
35
38
  - !ruby/object:Gem::Version
36
39
  version: '0'
37
40
  requirements: []
38
41
  rubyforge_project:
39
- rubygems_version: 2.0.5
42
+ rubygems_version: 2.2.2
40
43
  signing_key:
41
44
  specification_version: 4
42
- summary: my_gem is an awesome gem
45
+ summary: tiny library of non-destructive transformers for enumerables
43
46
  test_files: []