helperiffic 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,34 +1,42 @@
1
1
  class HelperBroker
2
- def initialize(teh_scope)
3
- @scope = teh_scope
2
+ def initialize(app)
3
+ @app = app
4
4
  @helpers = {}
5
5
  end
6
-
7
- def helper(name)
8
- class_sym = "#{name.capitalize}Helper".to_sym
9
- @helpers[class_sym] ||= load_helper(class_sym)
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
- h = helper(method_sym)
14
- h.send(method_sym, *args, &block)
14
+ helper = get_helper(method_sym)
15
+ helper.send(method_sym, *args, &block)
15
16
  end
16
17
 
17
18
  private
18
19
 
19
- def load_helper(class_sym)
20
- h = @scope.class.const_get(class_sym).new
21
- h.hb = self if h.respond_to? :"hb="
22
- h
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 hb=(helperBroker)
28
- @hb = helperBroker
30
+ def app=(app)
31
+ @app = app
29
32
  end
30
-
31
- def hb
32
- @hb
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
@@ -5,9 +5,14 @@ module Sinatra
5
5
  module Helperiffic
6
6
  def self.registered(app)
7
7
  app.helpers do
8
- def hb
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
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 0
9
- version: 1.0.0
8
+ - 1
9
+ version: 1.0.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Hector Virgen