fixjour 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/fixjour/builders.rb +9 -0
- data/lib/fixjour/redundant_check.rb +31 -0
- metadata +2 -1
data/lib/fixjour/builders.rb
CHANGED
@@ -55,6 +55,7 @@ module Fixjour
|
|
55
55
|
def define_new(name, &block)
|
56
56
|
define_method("new_#{name}") do |*args|
|
57
57
|
overrides = args.first || { }
|
58
|
+
overrides.extend(OverrideProcessing)
|
58
59
|
result = block.bind(self).call(overrides)
|
59
60
|
result
|
60
61
|
end
|
@@ -93,5 +94,13 @@ module Fixjour
|
|
93
94
|
klass.new
|
94
95
|
end
|
95
96
|
end
|
97
|
+
|
98
|
+
module OverrideProcessing
|
99
|
+
def process(key)
|
100
|
+
if value = delete(key)
|
101
|
+
yield value
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
96
105
|
end
|
97
106
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Fixjour
|
2
|
+
# Raised when a builder is defined for a class that already
|
3
|
+
# has one.
|
4
|
+
class RedundantBuilder < StandardError; end
|
5
|
+
|
6
|
+
def self.included(klass)
|
7
|
+
klass.extend(RedundancyChecker)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.builder_defined?(builder)
|
11
|
+
case builder
|
12
|
+
when Class then builders.include?(builders)
|
13
|
+
when String, Symbol then builders.map(&:name).include?(builder)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
module RedundancyChecker
|
18
|
+
BUILDER_METHOD_PATTERN = /(new|create|valid)_([a-zA-Z0-9]+)(_attributes)?/
|
19
|
+
|
20
|
+
def method_added(sym)
|
21
|
+
name = sym.to_s
|
22
|
+
|
23
|
+
if match = name.match(BUILDER_METHOD_PATTERN)
|
24
|
+
klass_name = match[2].classify
|
25
|
+
if Fixjour.builder_defined?(klass_name)
|
26
|
+
raise RedundantBuilder.new("You already defined a builder for #{inspect}")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fixjour
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pat Nakajima
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- lib/fixjour/builders.rb
|
38
38
|
- lib/fixjour/errors.rb
|
39
39
|
- lib/fixjour/verify.rb
|
40
|
+
- lib/fixjour/redundant_check.rb
|
40
41
|
- lib/fixjour.rb
|
41
42
|
has_rdoc: true
|
42
43
|
homepage: http://github.com/nakajima/fixjour
|