helperiffic 1.0.0 → 1.0.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.
- data/lib/helperiffic.rb +25 -17
- data/lib/sinatra/helperiffic.rb +6 -1
- metadata +2 -2
data/lib/helperiffic.rb
CHANGED
@@ -1,34 +1,42 @@
|
|
1
1
|
class HelperBroker
|
2
|
-
def initialize(
|
3
|
-
@
|
2
|
+
def initialize(app)
|
3
|
+
@app = app
|
4
4
|
@helpers = {}
|
5
5
|
end
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
@helpers[
|
6
|
+
|
7
|
+
# Lazily-instantiates a helper based on short name
|
8
|
+
def get_helper(name)
|
9
|
+
@helpers[name] ||= load_helper(name)
|
10
10
|
end
|
11
11
|
|
12
|
+
# Proxies method calls to helpers
|
12
13
|
def method_missing(method_sym, *args, &block)
|
13
|
-
|
14
|
-
|
14
|
+
helper = get_helper(method_sym)
|
15
|
+
helper.send(method_sym, *args, &block)
|
15
16
|
end
|
16
17
|
|
17
18
|
private
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
# Factory method for instantiating helpers based on class name
|
21
|
+
def load_helper(name)
|
22
|
+
class_name = "#{name.to_s.capitalize}Helper".to_sym
|
23
|
+
helper = @app.class.const_get(class_name).new
|
24
|
+
helper.app = @app if helper.respond_to? :"app="
|
25
|
+
helper
|
23
26
|
end
|
24
27
|
end
|
25
28
|
|
26
29
|
module Helperiffic
|
27
|
-
def
|
28
|
-
@
|
30
|
+
def app=(app)
|
31
|
+
@app = app
|
29
32
|
end
|
30
|
-
|
31
|
-
def
|
32
|
-
@
|
33
|
+
|
34
|
+
def app
|
35
|
+
@app
|
36
|
+
end
|
37
|
+
|
38
|
+
# Delegate missing methods to app
|
39
|
+
def method_missing(method_sym, *args, &block)
|
40
|
+
app.send(method_sym, *args, &block) if app.respond_to? method_sym
|
33
41
|
end
|
34
42
|
end
|
data/lib/sinatra/helperiffic.rb
CHANGED
@@ -5,9 +5,14 @@ module Sinatra
|
|
5
5
|
module Helperiffic
|
6
6
|
def self.registered(app)
|
7
7
|
app.helpers do
|
8
|
-
def
|
8
|
+
def helper_broker
|
9
9
|
@helper_broker ||= HelperBroker.new(self)
|
10
10
|
end
|
11
|
+
|
12
|
+
# Proxies to helper broker
|
13
|
+
def method_missing(method_sym, *args, &block)
|
14
|
+
helper_broker.send(method_sym, *args, &block)
|
15
|
+
end
|
11
16
|
end
|
12
17
|
end
|
13
18
|
end
|