yahm 0.2.3 → 0.3.0.pre.alpha1

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