mullet 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,16 +8,16 @@ module Mullet
8
8
  include Scope
9
9
 
10
10
  # Constructor
11
- #
11
+ #
12
12
  # @param data_objects
13
13
  # scopes in outer to inner order
14
14
  def initialize(*data_objects)
15
15
  @scopes = []
16
- push_scope(*data_objects)
16
+ data_objects.each {|data| push_scope(data) }
17
17
  end
18
18
 
19
19
  # Resolves variable name to value.
20
- #
20
+ #
21
21
  # @param [Symbol] name
22
22
  # variable name
23
23
  # @return variable value
@@ -32,15 +32,13 @@ module Mullet
32
32
  return NOT_FOUND
33
33
  end
34
34
 
35
- # Adds new innermost nested scopes.
35
+ # Adds new innermost nested scope.
36
36
  #
37
- # @param data_objects
38
- # scopes in outer to inner order
39
- def push_scope(*data_objects)
40
- data_objects.each do |data|
41
- @scopes.push(
42
- data.respond_to?(:get_variable_value) ? data : DefaultScope.new(data))
43
- end
37
+ # @param data
38
+ # data object
39
+ def push_scope(data)
40
+ @scopes.push(
41
+ data.respond_to?(:get_variable_value) ? data : DefaultScope.new(data))
44
42
  end
45
43
 
46
44
  # Removes innermost nested scope.
@@ -2,7 +2,7 @@ require 'mullet/sinatra/engine'
2
2
  require 'sinatra/base'
3
3
 
4
4
  module Mullet
5
-
5
+
6
6
  # Sinatra extension for rendering views with Mullet.
7
7
  #
8
8
  # Example:
@@ -35,8 +35,24 @@ module Mullet
35
35
  module Helpers
36
36
  @@engine = Mullet::Sinatra::Engine.new()
37
37
 
38
+ # Renders output for a view
39
+ #
40
+ # @param [Symbol] view_name
41
+ # name of view to render
42
+ # @param [Hash] options
43
+ # name to value hash of options:
44
+ # :layout
45
+ # If value is `false`, no layout is used, otherwise the
46
+ # value is the layout name to use.
47
+ # :locals
48
+ # name to value hash of local variables to make available
49
+ # to the view
50
+ # @param [Hash] locals
51
+ # name to value hash of local variables to make available to the
52
+ # view
53
+ # @return [String] rendered output
38
54
  def mullet(view_name, options={}, locals={})
39
- # The options hash may contain a key :locals with the value being a
55
+ # The options hash may contain a key :locals with the value being a
40
56
  # hash mapping variable names to values.
41
57
  locals.merge!(options.delete(:locals) || {})
42
58
 
@@ -84,7 +100,7 @@ module Mullet
84
100
  layout.execute(view, layout_output)
85
101
  output = layout_output
86
102
  end
87
-
103
+
88
104
  return output
89
105
  end
90
106
  end
@@ -1,3 +1,3 @@
1
1
  module Mullet
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -2,12 +2,12 @@ require 'mullet/default_nested_scope'
2
2
 
3
3
  module Mullet
4
4
 
5
- # Adapts model data for rendering in a template. Applications will typically
6
- # define subclasses with attributes that will be referenced by name from the
7
- # templates.
5
+ # Decorates model with additional variables that can be rendered in a
6
+ # template. Applications will typically define subclasses with attributes
7
+ # that will be referenced by name from the templates.
8
8
  class View
9
9
 
10
- # Sets model to adapt. Applications do not have to call this method
10
+ # Sets model to decorate. Applications do not have to call this method
11
11
  # directly. The template engine will call this method implicitly.
12
12
  #
13
13
  # @param data_objects
@@ -17,13 +17,22 @@ module Mullet
17
17
  end
18
18
 
19
19
  # Resolves variable name to value from the model.
20
- #
20
+ #
21
21
  # @param [Symbol] name
22
22
  # variable name
23
23
  # @return variable value
24
24
  def fetch(name)
25
25
  return @model.get_variable_value(name)
26
26
  end
27
+
28
+ # Allow model values to be queried as if they were attributes.
29
+ def method_missing(name, *args)
30
+ value = fetch(name)
31
+ if value == Scope::NOT_FOUND
32
+ value = super.method_missing(name, *args)
33
+ end
34
+ return value
35
+ end
27
36
  end
28
37
 
29
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mullet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-04 00:00:00.000000000 Z
12
+ date: 2012-04-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: i18n
16
- requirement: &2152575380 !ruby/object:Gem::Requirement
16
+ requirement: &2152598260 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.6.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152575380
24
+ version_requirements: *2152598260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &2152574680 !ruby/object:Gem::Requirement
27
+ requirement: &2152596780 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.5.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152574680
35
+ version_requirements: *2152596780
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: redcarpet
38
- requirement: &2152574020 !ruby/object:Gem::Requirement
38
+ requirement: &2152483460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.17.2
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2152574020
46
+ version_requirements: *2152483460
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &2152573060 !ruby/object:Gem::Requirement
49
+ requirement: &2152482980 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: 0.7.3
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2152573060
57
+ version_requirements: *2152482980
58
58
  description: ! "It's like Mustache but the variables are in HTML attributes.\n\n *
59
59
  Extremely simple variable syntax is incapable of expressing logic in the\n templates.\n
60
60
  \ * Templates are clean HTML which your HTML authoring tool and browser can\n display