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.
@@ -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