proxy_for_template 0.0.5 → 0.0.6
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.
- data/lib/proxy_for_template.rb +21 -12
- data/lib/proxy_for_template/version.rb +1 -1
- data/spec/activerecord_spec.rb +0 -15
- data/spec/proxy_spec.rb +6 -26
- metadata +4 -4
data/lib/proxy_for_template.rb
CHANGED
@@ -66,26 +66,36 @@ module ProxyForTemplate
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
+
class TemplateProxyCall
|
70
|
+
attr_reader :method, :template_value, :self_value, :instance
|
71
|
+
|
72
|
+
def initialize(method, template_value, self_value)
|
73
|
+
@method = method
|
74
|
+
@template_value = template_value
|
75
|
+
@self_value = self_value
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
69
79
|
def self.included(base)
|
70
80
|
base.extend(ClassMethods)
|
71
81
|
end
|
72
82
|
|
73
|
-
def template_takes_precedence(method)
|
74
|
-
true
|
75
|
-
end
|
76
|
-
|
77
83
|
def treat_as_nil
|
78
84
|
self.class.treat_as_nil
|
79
85
|
end
|
80
86
|
|
81
|
-
def treat_as_nil?(method,
|
82
|
-
|
87
|
+
def treat_as_nil?(method, template_value)
|
88
|
+
|
83
89
|
proc = treat_as_nil[method.to_sym]
|
84
90
|
|
85
91
|
is_nil = false
|
86
92
|
|
93
|
+
self_value = self.send(method.to_s + '_orig')
|
94
|
+
|
87
95
|
if(proc)
|
88
|
-
|
96
|
+
call_info = TemplateProxyCall.new(method, template_value, self_value)
|
97
|
+
|
98
|
+
is_nil = proc.call(self, call_info)
|
89
99
|
end
|
90
100
|
|
91
101
|
is_nil
|
@@ -95,9 +105,7 @@ module ProxyForTemplate
|
|
95
105
|
self.class.templated_methods
|
96
106
|
end
|
97
107
|
|
98
|
-
def proxy_attribute_read(method)
|
99
|
-
|
100
|
-
|
108
|
+
def proxy_attribute_read(method)
|
101
109
|
self_value = nil
|
102
110
|
|
103
111
|
if(template_responds_to?(method))
|
@@ -106,7 +114,7 @@ module ProxyForTemplate
|
|
106
114
|
|
107
115
|
self_value = self.attributes[method]
|
108
116
|
|
109
|
-
if
|
117
|
+
if !(template_value.nil? || template_value == '')
|
110
118
|
self_value = template_value
|
111
119
|
end
|
112
120
|
|
@@ -120,7 +128,7 @@ module ProxyForTemplate
|
|
120
128
|
|
121
129
|
self_value = self.send(method + '_orig')
|
122
130
|
|
123
|
-
if
|
131
|
+
if !(template_value.nil? || template_value == '')
|
124
132
|
self_value = template_value
|
125
133
|
end
|
126
134
|
|
@@ -145,6 +153,7 @@ module ProxyForTemplate
|
|
145
153
|
value = value_from_template(method)
|
146
154
|
|
147
155
|
blank = (value.nil? || value == '')
|
156
|
+
|
148
157
|
!blank
|
149
158
|
end
|
150
159
|
|
data/spec/activerecord_spec.rb
CHANGED
@@ -20,12 +20,6 @@ class Spork < ActiveRecord::Base
|
|
20
20
|
belongs_to :template, :class_name => Spork.name
|
21
21
|
include ProxyForTemplate
|
22
22
|
|
23
|
-
attr_accessor :template_takes_precedence
|
24
|
-
|
25
|
-
def template_takes_precedence(method)
|
26
|
-
@template_takes_precedence.nil? ? true : @template_takes_precedence
|
27
|
-
end
|
28
|
-
|
29
23
|
template_method :some_value
|
30
24
|
end
|
31
25
|
|
@@ -102,13 +96,4 @@ describe ProxyForTemplate, '#activerecord' do
|
|
102
96
|
|
103
97
|
base.some_value_before_type_cast.should eq(10)
|
104
98
|
end
|
105
|
-
|
106
|
-
it 'the base should take precedence over the template when specified and using before type cast' do
|
107
|
-
template = Spork.create(:some_value => 10)
|
108
|
-
base = Spork.create(:some_value => 5, :template => template)
|
109
|
-
|
110
|
-
base.template_takes_precedence = false
|
111
|
-
|
112
|
-
base.some_value_before_type_cast.should eq(5)
|
113
|
-
end
|
114
99
|
end
|
data/spec/proxy_spec.rb
CHANGED
@@ -6,21 +6,19 @@ class Foo
|
|
6
6
|
attr_accessor :a
|
7
7
|
attr_accessor :b
|
8
8
|
attr_accessor :c
|
9
|
-
|
9
|
+
|
10
|
+
def check_if_false(call_info)
|
11
|
+
call_info.template_value == false
|
12
|
+
end
|
10
13
|
|
11
|
-
template_method :a, :treat_as_nil => Proc.new { |
|
14
|
+
template_method :a, :treat_as_nil => Proc.new { |instance, call_info| instance.check_if_false(call_info) }
|
12
15
|
|
13
16
|
attr_accessor :template
|
14
17
|
|
15
|
-
def template_takes_precedence(method)
|
16
|
-
@template_takes_precedence
|
17
|
-
end
|
18
|
-
|
19
18
|
def initialize
|
20
19
|
@template = Bar.new('abc123')
|
21
20
|
@a = 'abc'
|
22
21
|
@b = '123'
|
23
|
-
@template_takes_precedence = true
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
@@ -91,26 +89,9 @@ describe ProxyForTemplate do
|
|
91
89
|
@f.a.should eq('abc')
|
92
90
|
end
|
93
91
|
|
94
|
-
|
95
|
-
@f.template_takes_precedence(:a).should eq(true)
|
96
|
-
@f.template_takes_precedence = false
|
97
|
-
@f.template_takes_precedence(:a).should eq(false)
|
98
|
-
end
|
99
|
-
|
100
|
-
it 'the template should not take precedence if its marked as a theme' do
|
101
|
-
@f.template_takes_precedence = false
|
102
|
-
|
103
|
-
@f.template_takes_precedence(:a).should eq(false)
|
104
|
-
|
105
|
-
@f.a = 123
|
106
|
-
@f.a.should eq(123)
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'should be able to enumerate treat_false_as_nil methods' do
|
92
|
+
it 'should be able to enumerate treat_as_nil methods' do
|
110
93
|
@f.treat_as_nil.keys.to_a.should eq([:a])
|
111
94
|
|
112
|
-
@f.treat_as_nil[:a].call(false).should eq(true)
|
113
|
-
|
114
95
|
@f.treat_as_nil?(:a, false).should eq(true)
|
115
96
|
end
|
116
97
|
|
@@ -118,5 +99,4 @@ describe ProxyForTemplate do
|
|
118
99
|
@f.template.a = false
|
119
100
|
@f.a.should eq('abc')
|
120
101
|
end
|
121
|
-
|
122
102
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proxy_for_template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Mike Emery
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-01-
|
18
|
+
date: 2012-01-20 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|