morfo 0.6.0 → 0.7.0

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: 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