yahm 0.2.3 → 0.3.0.pre.alpha1

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: b4e915094d842413c8efffc151a7712d74028793
4
- data.tar.gz: 102b31ca857c9579be0b4c4548bb89ca5e07a47d
3
+ metadata.gz: 23e12da1dfb2df5bbd79002729fa6dd1f57e301e
4
+ data.tar.gz: f704060805ec94c85d7e40247409bf870f56e055
5
5
  SHA512:
6
- metadata.gz: 6cc1e2686bda0a9c01497dcaf9755b348716893d1a87fdc4961913084aa3a95c5963d5f0f12c1c2f173c5067725eaa53a86d3ef63f400c3bdff8714530a98676
7
- data.tar.gz: 80e598d1bfb4788bc6bfb7938e799a815b8bf0ca17bb7e1761d1f88e8843f5a33b888f1905c2272dde50969c7329802d601ba7c9b601904fa9403240b6813225
6
+ metadata.gz: 4ea59ad4041d7249db4eedf222b071e858bccc29e06c529c536541307414b5a5639cefb18c29e585289b069a36d5a60e6e8ee69358cb13a19fc6bbd6905d528b
7
+ data.tar.gz: bd125fa650cbc059bcf448b472cf0b34e7036b6d291fdc6e16db656203aea96897b73492c95f4ab85b5fadc5cc10003f54f96e32263b0a15d8d53e1a26b1d732
data/lib/yahm/mapping.rb CHANGED
@@ -23,20 +23,35 @@ class Yahm::Mapping
23
23
 
24
24
  @rules.each do |rule|
25
25
  thread_pool.process do
26
- apply_rule(rule, input_hash, @result, options)
26
+ apply_rule(rule, input_hash, @result)
27
27
  end
28
28
  end
29
29
 
30
30
  thread_pool.shutdown
31
31
  else
32
32
  @rules.each do |rule|
33
- apply_rule(rule, input_hash, @result, options)
33
+ apply_rule(rule, input_hash, @result)
34
34
  end
35
35
  end
36
36
 
37
37
  @result
38
38
  end
39
39
 
40
+ #
41
+ # dynamic context method resolutuon
42
+ #
43
+ def method_missing(sym, *args, &block)
44
+ if @context.respond_to?(sym)
45
+ @context.send(sym, *args, &block)
46
+ else
47
+ super
48
+ end
49
+ end
50
+
51
+ def respond_to_missing?(sym, *)
52
+ @context.respond_to?(sym) || super
53
+ end
54
+
40
55
  private
41
56
 
42
57
  def map(path, options = {})
@@ -44,7 +59,7 @@ class Yahm::Mapping
44
59
  self
45
60
  end
46
61
 
47
- def apply_rule(rule, input_hash, output_hash, options = {})
62
+ def apply_rule(rule, input_hash, output_hash)
48
63
  value =
49
64
  if rule[:path].is_a?(Array)
50
65
  rule[:path].inject({}) do |memo, _path|
@@ -58,10 +73,10 @@ class Yahm::Mapping
58
73
  value = rule[:default] && value.nil? ? rule[:default] : value
59
74
  value = rule[:force_array] ? (value.nil? ? [] : [value].flatten(1)) : value
60
75
  value = rule[:split_by] && value.is_a?(String) ? value.split(rule[:split_by]).map!(&:strip) : value
61
- value = rule[:processed_by] ? (options[:context] || @context || self).instance_exec(value, &rule[:processed_by]) : value
76
+ value = rule[:processed_by] ? rule[:processed_by].call(value) : value
62
77
 
63
78
  if rule[:to].is_a?(Proc)
64
- (options[:context] || @context || self).instance_exec(value, output_hash, &rule[:to])
79
+ instance_exec(output_hash, value, &rule[:to])
65
80
  else
66
81
  Hpath.set(output_hash, rule[:to], value)
67
82
  end
data/lib/yahm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Yahm
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.0-alpha1"
3
3
  end
@@ -119,7 +119,7 @@ describe Yahm::Mapping do
119
119
  end
120
120
 
121
121
  it "accepts a lambda/proc as :to option" do
122
- expect(Yahm::Mapping.new { map "/source", to: lambda { |v, result| result.merge!(target: true) } }.apply_to(foo: "bar"))
122
+ expect(Yahm::Mapping.new { map "/source", to: lambda { |result, v| result.merge!(target: true) } }.apply_to(foo: "bar"))
123
123
  .to eq({
124
124
  :target => true
125
125
  })
@@ -144,19 +144,5 @@ describe Yahm::Mapping do
144
144
  combined: "hello world"
145
145
  })
146
146
  end
147
-
148
- it "can be called with a \"context\" option to set/overwrite the mapping context" do
149
- mapping = Yahm::Mapping.new do
150
- map "/source", to: "/target", processed_by: lambda { |v| process_value(v) }
151
- end
152
-
153
- context = Module.new do
154
- def self.process_value(v)
155
- v.to_i
156
- end
157
- end
158
-
159
- expect(mapping.apply_to({source: "1"}, context: context)).to eq({target: 1})
160
- end
161
147
  end
162
148
  end
data/yahm.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_dependency "hpath", "~> 0.1.0"
19
+ spec.add_dependency "hpath", ">= 0.0.5"
20
20
  spec.add_dependency "thread", ">= 0.1.4"
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.5"
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yahm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0.pre.alpha1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Sievers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-08 00:00:00.000000000 Z
11
+ date: 2014-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hpath
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0
19
+ version: 0.0.5
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.0
26
+ version: 0.0.5
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thread
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -115,9 +115,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - ">="
118
+ - - ">"
119
119
  - !ruby/object:Gem::Version
120
- version: '0'
120
+ version: 1.3.1
121
121
  requirements: []
122
122
  rubyforge_project:
123
123
  rubygems_version: 2.2.0