mullet 0.0.3 → 0.0.4
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/mullet/default_nested_scope.rb +9 -11
- data/lib/mullet/sinatra.rb +19 -3
- data/lib/mullet/version.rb +1 -1
- data/lib/mullet/view.rb +14 -5
- metadata +10 -10
@@ -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(
|
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
|
35
|
+
# Adds new innermost nested scope.
|
36
36
|
#
|
37
|
-
# @param
|
38
|
-
#
|
39
|
-
def push_scope(
|
40
|
-
|
41
|
-
|
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.
|
data/lib/mullet/sinatra.rb
CHANGED
@@ -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
|
data/lib/mullet/version.rb
CHANGED
data/lib/mullet/view.rb
CHANGED
@@ -2,12 +2,12 @@ require 'mullet/default_nested_scope'
|
|
2
2
|
|
3
3
|
module Mullet
|
4
4
|
|
5
|
-
#
|
6
|
-
# define subclasses with attributes
|
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
|
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.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *2152598260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
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: *
|
35
|
+
version_requirements: *2152596780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: redcarpet
|
38
|
-
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: *
|
46
|
+
version_requirements: *2152483460
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
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: *
|
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
|