hash_template 0.1

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 +7 -0
  2. data/lib/hash_template.rb +32 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9471aad5bc81fde778d3b258e05932f8704a18d3
4
+ data.tar.gz: e7b99bbe990eb83cc3b42f251aa276cfa66b0cb3
5
+ SHA512:
6
+ metadata.gz: 97f40aabbc8ce4262d0f9b686becc020f2a8a6257d4787cda1bcfeb0d7eba60aeef6c897eeb1a7e6c824a2298dea5fb7fef620763dcface0207be5f239f861ee
7
+ data.tar.gz: be66c268726efb9f7da0713faf974a4b0f154d575dc309e5dd10547b5217f899c48d2db034fb89c9f9ae1237e20fcaa082fe91e478918a9ebf7521a3e879a06c
@@ -0,0 +1,32 @@
1
+ class HashTemplate
2
+ attr_reader :data
3
+
4
+ def initialize(data)
5
+ @data = data
6
+ end
7
+
8
+ def map(mapping)
9
+ mapping.each_with_object({}) do |(key, value), result|
10
+ case value
11
+ when Symbol
12
+ result[key] = data[value]
13
+ when String
14
+ result[key] = analyze_strings(value)
15
+ when Hash
16
+ result[key] = map(value)
17
+ when Array
18
+ result[key] = value.map { |hash| map hash }
19
+ end
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def analyze_strings(value)
26
+ if value.start_with?('!')
27
+ !data[value[1..-1].to_sym]
28
+ else
29
+ data[value.to_sym]
30
+ end
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hash_template
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Denis Peplin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ description: Transform a flat hash to a structured hash using template.
28
+ email: denis.peplin@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/hash_template.rb
34
+ homepage: http://github.com/denispeplin/hash_template
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.4.8
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Transform a flat hash to a structured hash using template.
58
+ test_files: []