jimmy 0.2 → 0.2.1

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: bd8199acb7af5c492da8d005e07eac93636d5890
4
- data.tar.gz: b318741c9a421485ce660f3e9c94b7682eccad89
3
+ metadata.gz: 3b145c1cfe4c89af444c4b4244125acf8cc7976d
4
+ data.tar.gz: 6cf8d0705db84c4da118d22f359b823eec1a294c
5
5
  SHA512:
6
- metadata.gz: b1e02737e075e1251d217fe3c89a33242fc8fb766bd69f9d68f40b32dbdf590680a1796ca7ffa132500427b0fbba749943259bd30a4bd3c2df88a6f5e4ebcbf0
7
- data.tar.gz: c3e3de0769a8931338a1d185675396e4776da762a8da6e091adf40b011219d47c71a0eeb1f4e3fc33126ca77d47ac3912ec953d7250ae2b675d92d12f2509348
6
+ metadata.gz: b790bbe36cf3350c930f3f958d065b614a768b7ca6eaddbacfb97a5207981b5bfc8a5de0fd8eb7f5a8516f97385d7f8ee00ebf33ac695415da40d34f091a838d
7
+ data.tar.gz: 0062dea3b6fdf538e052d37cd7e25292bc19ce9eac5668bcbcee68f1f8111b55d90b4942e5068cb346e63a0c319dca9741368a5ff2dbf795ddaa36839902431e
@@ -28,17 +28,16 @@ module Jimmy
28
28
  end
29
29
 
30
30
  def with_locals(**locals)
31
- # TODO: validate locals
31
+ locals.each_key do |key|
32
+ raise "Local '#{key}' conflicts with an existing DSL method" if reserved? key
33
+ end
32
34
  original = locals
33
35
  @locals = original.merge(locals)
34
36
  yield.tap { @locals = original }
35
37
  end
36
38
 
37
39
  def respond_to_missing?(method, *)
38
- locals.key?(method) ||
39
- SchemaTypes.key?(method) ||
40
- domain.types.key?(method) ||
41
- super
40
+ locals.key?(method) || reserved?(method, false) || super
42
41
  end
43
42
 
44
43
  def method_missing(method, *args, &block)
@@ -64,6 +63,13 @@ module Jimmy
64
63
  super method, *args, &block
65
64
  end
66
65
 
66
+ private
67
+
68
+ def reserved?(key, all = true)
69
+ domain.autoload_type key
70
+ (all && respond_to?(key)) || SchemaTypes.key?(key) || domain.types.key?(key)
71
+ end
72
+
67
73
  end
68
74
 
69
75
  end
@@ -62,11 +62,18 @@ module Jimmy
62
62
  def include(*partial_names, **locals)
63
63
  partial_names.each do |name|
64
64
  with_locals locals do
65
- instance_eval *domain.partials[name.to_s]
65
+ evaluate_partial domain.partials[name.to_s]
66
66
  end
67
67
  end
68
68
  end
69
69
 
70
+ private
71
+
72
+ # Minimize collisions with local scope (hence the weird name __args)
73
+ def evaluate_partial(__args)
74
+ instance_eval *__args
75
+ end
76
+
70
77
  end
71
78
 
72
79
  end
data/lib/jimmy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jimmy
2
- VERSION = '0.2'
2
+ VERSION = '0.2.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jimmy
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neil E. Pearson