morfo 0.6.0 → 0.7.0

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: 7648a07af68be99b680d1934f0e50e547bd5c7f7
4
- data.tar.gz: 854a69a7cd5841cd2ccfb92268c34a06c2098e02
3
+ metadata.gz: 274682378ec985cb600c6e60c15ccb701fa0f4c1
4
+ data.tar.gz: 9fc638a481c23d29566b4dccf2436338435c9f3e
5
5
  SHA512:
6
- metadata.gz: 591c1bfa68847887bc2f34d21a586132cd84e853dc8651a5d5c86aaff6a7f8bcaeb104fb1c90ac6623eec6814f93d8873fe9edbde126b4d3bf4ae889361f9add
7
- data.tar.gz: debde19fa3a8a6278760876cfa89a9c6b52b984af6aaf68676b30fabf55c1c6e34a73ea726bfd86dc4ef6c68484bc6eb36a71e6918bf26a43f7d02d92b75680b
6
+ metadata.gz: a1fcc4810aaf55617f73f449cb9499d3b40f6e2b67bb196b336a3042e1d71d474449ae32635d02574067f86791c4e1a80b30f82091472ea460103f08e4cd6732
7
+ data.tar.gz: a45b4fac0a9cfe7721b485361dd6480c88121ef9078a11ad44c81f503b17e0c3dccf3e148c8f86936a69ed6ea3c5b25daf409ae62ff6e72d62c38cec309bdb47
@@ -1,11 +1,13 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  cache: bundler
4
+ bundler_args: --without development
4
5
  rvm:
5
6
  - 2.0.0
6
7
  - 2.1.8
7
8
  - 2.2.4
8
9
  - 2.3.0
10
+ - 2.4.0
9
11
  - jruby-9.0.5.0
10
12
  - ruby-head
11
13
  - jruby-head
data/Gemfile CHANGED
@@ -4,16 +4,18 @@ source "https://rubygems.org"
4
4
  gemspec
5
5
 
6
6
  group :test, :development do
7
+ gem "rspec", ">= 2.14", "< 4.0"
7
8
  gem "coveralls", require: false
9
+ gem "simplecov"
10
+ gem "rubinius-coverage", platform: :rbx
11
+ end
12
+
13
+ group :development do
8
14
  gem "guard"
9
15
  gem "guard-rspec"
10
- gem "simplecov"
11
16
  gem "pry"
12
- gem "rubinius-coverage", platform: :rbx
13
17
 
14
18
  gem "rb-inotify", require: false
15
19
  gem "rb-fsevent", require: false
16
20
  gem "rb-fchange", require: false
17
21
  end
18
-
19
- gem "json"
@@ -1,4 +1,4 @@
1
- require "active_support/core_ext/hash"
1
+ require 'deep_merge/rails_compat'
2
2
  require "morfo/version"
3
3
  require "morfo/tools"
4
4
  require "morfo/actions"
@@ -20,7 +20,7 @@ module Morfo
20
20
  def self.morf_single input, options = {}
21
21
  output = {}
22
22
  mapping_actions.each do |field_path, action|
23
- output.deep_merge!(store_value(action.execute(input), field_path, options))
23
+ output.deeper_merge!(store_value(action.execute(input), field_path, options))
24
24
  end
25
25
  output
26
26
  end
@@ -7,7 +7,7 @@ module Morfo
7
7
  def build
8
8
  # WTF??? `definitions` is not accessible inside class
9
9
  # so this javascript technique is necesseray
10
- tmp_definitions = definitions.map { |h| h.symbolize_keys }
10
+ tmp_definitions = definitions.map { |h| Morfo::Tools::ExtendedHash.symbolize_keys(h) }
11
11
  Class.new(Morfo::Base) do
12
12
  tmp_definitions.each do |definition|
13
13
  f = field(*definition[:field])
@@ -1,5 +1,22 @@
1
1
  module Morfo
2
2
  module Tools
3
+ module ExtendedHash
4
+ extend self
5
+
6
+ def symbolize_keys(hash)
7
+ transform_keys(hash) { |key| key.to_sym rescue key }
8
+ end
9
+
10
+ def transform_keys(hash)
11
+ return hash.enum_for(:transform_keys) { size } unless block_given?
12
+ result = {}
13
+ hash.each_key do |key|
14
+ result[yield(key)] = hash[key]
15
+ end
16
+ result
17
+ end
18
+ end
19
+
3
20
  class FlattenHashKeys
4
21
  attr_reader :input_hash
5
22
 
@@ -10,10 +27,10 @@ module Morfo
10
27
  def flatten
11
28
  input_hash.inject({}) do |result_hash, (key, value)|
12
29
  inner_hash = false
13
- if value.is_a?(Hash)
30
+ if value.is_a?(::Hash)
14
31
  inner_hash = true
15
32
  value.each do |inner_key, inner_value|
16
- if inner_value.is_a?(Hash)
33
+ if inner_value.is_a?(::Hash)
17
34
  inner_hash = true
18
35
  end
19
36
  result_hash.merge!("#{key}.#{inner_key}".to_sym => inner_value)
@@ -1,3 +1,3 @@
1
1
  module Morfo
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "morfo"
8
8
  spec.version = Morfo::VERSION
9
9
  spec.authors = ["Leif Gensert"]
10
- spec.email = ["leif@propertybase.com"]
10
+ spec.email = ["leif@leif.io"]
11
11
  spec.description = %q{This gem provides a DSL for converting one hash into another}
12
12
  spec.summary = %q{Inspired by ActiveImporter, this gem generically converts an array of hashes}
13
13
  spec.homepage = ""
@@ -17,12 +17,12 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features|benchmarks)/})
19
19
  spec.require_paths = ["lib"]
20
+ spec.required_ruby_version = '>= 2.0.0'
20
21
 
21
- spec.add_dependency "rake"
22
- spec.add_dependency "json"
23
- spec.add_dependency "activesupport", "< 5.1"
24
- spec.add_dependency "rubysl" if RUBY_ENGINE == "rbx"
22
+ spec.add_runtime_dependency "json"
23
+ spec.add_runtime_dependency "deep_merge"
24
+ spec.add_runtime_dependency "rubysl" if RUBY_ENGINE == "rbx"
25
25
 
26
+ spec.add_development_dependency "rake"
26
27
  spec.add_development_dependency "bundler", "~> 1.3"
27
- spec.add_development_dependency "rspec", ">= 2.14", "< 4.0"
28
28
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morfo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leif Gensert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-02 00:00:00.000000000 Z
11
+ date: 2017-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: json
28
+ name: deep_merge
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: activesupport
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "<"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '5.1'
48
- type: :runtime
47
+ version: '0'
48
+ type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "<"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '5.1'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,29 +66,9 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '2.14'
76
- - - "<"
77
- - !ruby/object:Gem::Version
78
- version: '4.0'
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- version: '2.14'
86
- - - "<"
87
- - !ruby/object:Gem::Version
88
- version: '4.0'
89
69
  description: This gem provides a DSL for converting one hash into another
90
70
  email:
91
- - leif@propertybase.com
71
+ - leif@leif.io
92
72
  executables: []
93
73
  extensions: []
94
74
  extra_rdoc_files: []
@@ -129,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
109
  requirements:
130
110
  - - ">="
131
111
  - !ruby/object:Gem::Version
132
- version: '0'
112
+ version: 2.0.0
133
113
  required_rubygems_version: !ruby/object:Gem::Requirement
134
114
  requirements:
135
115
  - - ">="
@@ -137,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
117
  version: '0'
138
118
  requirements: []
139
119
  rubyforge_project:
140
- rubygems_version: 2.5.1
120
+ rubygems_version: 2.6.8
141
121
  signing_key:
142
122
  specification_version: 4
143
123
  summary: Inspired by ActiveImporter, this gem generically converts an array of hashes