jimmy 0.2 → 0.2.1

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