mullet 0.0.0 → 0.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/mullet/container.rb +8 -4
- data/lib/mullet/default_model.rb +9 -9
- data/lib/mullet/default_nested_model.rb +7 -6
- data/lib/mullet/html/attribute_command.rb +8 -4
- data/lib/mullet/html/attributes.rb +22 -0
- data/lib/mullet/html/command.rb +4 -3
- data/lib/mullet/html/command_element_renderer.rb +19 -0
- data/lib/mullet/html/element.rb +41 -0
- data/lib/mullet/html/element_renderer.rb +261 -0
- data/lib/mullet/html/filtered_element_handler.rb +87 -0
- data/lib/mullet/html/for_element_renderer.rb +47 -0
- data/lib/mullet/html/if_element_renderer.rb +46 -0
- data/lib/mullet/html/layout.rb +48 -0
- data/lib/mullet/html/message.rb +55 -0
- data/lib/mullet/html/message_attribute_command.rb +30 -0
- data/lib/mullet/html/model_attribute_command.rb +30 -0
- data/lib/mullet/html/page_builder.rb +152 -0
- data/lib/mullet/html/parser/attribute.rb +8 -0
- data/lib/mullet/html/parser/constants.rb +1061 -0
- data/lib/mullet/html/parser/default_handler.rb +27 -0
- data/lib/mullet/html/parser/input_stream.rb +711 -0
- data/lib/mullet/html/parser/open_element.rb +77 -0
- data/lib/mullet/html/parser/simple_parser.rb +128 -0
- data/lib/mullet/html/parser/tokenizer.rb +1085 -0
- data/lib/mullet/html/remove_mode.rb +30 -0
- data/lib/mullet/html/static_text_renderer.rb +20 -0
- data/lib/mullet/html/template.rb +44 -0
- data/lib/mullet/html/template_builder.rb +208 -63
- data/lib/mullet/html/template_loader.rb +77 -39
- data/lib/mullet/html/template_parser.rb +48 -0
- data/lib/mullet/html/unless_element_renderer.rb +24 -0
- data/lib/mullet/model.rb +2 -5
- data/lib/mullet/render_context.rb +24 -18
- data/lib/mullet/tilt.rb +37 -0
- data/lib/mullet/version.rb +2 -1
- data/lib/mullet.rb +1 -0
- metadata +58 -11
@@ -1,26 +1,31 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
require 'mullet/default_nested_model'
|
3
|
+
|
1
4
|
module Mullet
|
2
5
|
|
3
6
|
# Holds the rendering context to reduce the number of parameters passed to
|
4
7
|
# render methods.
|
5
8
|
class RenderContext
|
6
|
-
|
9
|
+
|
10
|
+
attr_accessor :escape_xml_enabled
|
7
11
|
|
8
12
|
# Constructor.
|
9
13
|
#
|
10
|
-
# @param [
|
14
|
+
# @param [Object] data
|
11
15
|
# provides data to render
|
12
|
-
# @param [Proc]
|
16
|
+
# @param [Proc] missing_value_strategy
|
13
17
|
# executed on attempt to render a variable that was not found
|
14
|
-
# @param [Proc]
|
18
|
+
# @param [Proc] nil_value_strategy
|
15
19
|
# executed on attempt to render nil value
|
16
20
|
# @param [#<<] output
|
17
|
-
# where rendered output
|
18
|
-
def initialize(
|
19
|
-
@model =
|
20
|
-
|
21
|
-
@
|
21
|
+
# where to write rendered output
|
22
|
+
def initialize(data, missing_value_strategy, nil_value_strategy, output)
|
23
|
+
@model = data.is_a?(DefaultNestedModel) ?
|
24
|
+
data : DefaultNestedModel.new(data)
|
25
|
+
@on_missing = missing_value_strategy
|
26
|
+
@on_nil = nil_value_strategy
|
22
27
|
@output = output
|
23
|
-
@
|
28
|
+
@escape_xml_enabled = true
|
24
29
|
end
|
25
30
|
|
26
31
|
# Escapes characters that could be interpreted as XML markup if enabled.
|
@@ -28,17 +33,17 @@ module Mullet
|
|
28
33
|
# @param [String] input
|
29
34
|
# input string
|
30
35
|
# @return escaped string, or the input string if escaping is disabled.
|
31
|
-
def escape_xml(
|
32
|
-
return @
|
36
|
+
def escape_xml(input)
|
37
|
+
return @escape_xml_enabled ? CGI.escape_html(input) : input
|
33
38
|
end
|
34
39
|
|
35
40
|
# Resolves variable name to value.
|
36
41
|
#
|
37
|
-
# @param [Symbol]
|
42
|
+
# @param [Symbol] name
|
38
43
|
# variable name
|
39
44
|
# @return value
|
40
|
-
def
|
41
|
-
return @model.
|
45
|
+
def get_variable_value(name)
|
46
|
+
return @model.get_variable_value(name)
|
42
47
|
end
|
43
48
|
|
44
49
|
# Adds a nested scope to search in subsequent lookups.
|
@@ -59,13 +64,14 @@ module Mullet
|
|
59
64
|
#
|
60
65
|
# @param [Symbol] key
|
61
66
|
# variable name
|
67
|
+
# @return value
|
62
68
|
def get_display_value(key)
|
63
|
-
value = @model.
|
69
|
+
value = @model.get_variable_value(key)
|
64
70
|
if value == Model::NOT_FOUND
|
65
|
-
value = @
|
71
|
+
value = @on_missing.call(key)
|
66
72
|
end
|
67
73
|
if value == nil
|
68
|
-
value = @
|
74
|
+
value = @on_nil.call(key)
|
69
75
|
end
|
70
76
|
return value
|
71
77
|
end
|
data/lib/mullet/tilt.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'mullet'
|
2
|
+
require 'tilt'
|
3
|
+
|
4
|
+
# Registers the Mullet template engine in Tilt to handle file names with the
|
5
|
+
# `html` extension.
|
6
|
+
module Mullet; module Tilt
|
7
|
+
|
8
|
+
class MulletTemplate < ::Tilt::Template
|
9
|
+
|
10
|
+
def initialize_engine
|
11
|
+
@@loader = Mullet::HTML::TemplateLoader.new(nil)
|
12
|
+
@@parser = Mullet::HTML::TemplateParser.new(@@loader)
|
13
|
+
end
|
14
|
+
|
15
|
+
def prepare
|
16
|
+
if file
|
17
|
+
@@loader.template_path = File.dirname(file)
|
18
|
+
end
|
19
|
+
|
20
|
+
@template = @@parser.parse(data)
|
21
|
+
end
|
22
|
+
|
23
|
+
def evaluate(scope, locals, &block)
|
24
|
+
if block
|
25
|
+
content = block.call()
|
26
|
+
locals = locals.merge(content: content)
|
27
|
+
end
|
28
|
+
|
29
|
+
output = ''
|
30
|
+
@template.execute(DefaultNestedModel.new(scope, locals), output)
|
31
|
+
return output
|
32
|
+
end
|
33
|
+
|
34
|
+
::Tilt.register self, :html
|
35
|
+
end
|
36
|
+
|
37
|
+
end; end
|
data/lib/mullet/version.rb
CHANGED
data/lib/mullet.rb
CHANGED
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.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: i18n
|
16
|
+
requirement: &2152605560 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.6.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2152605560
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: nokogiri
|
16
|
-
requirement: &
|
27
|
+
requirement: &2152602100 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
30
|
- - ! '>='
|
@@ -21,22 +32,33 @@ dependencies:
|
|
21
32
|
version: 1.5.0
|
22
33
|
type: :runtime
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *2152602100
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: redcarpet
|
38
|
+
requirement: &2152600660 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.17.2
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2152600660
|
25
47
|
- !ruby/object:Gem::Dependency
|
26
48
|
name: yard
|
27
|
-
requirement: &
|
49
|
+
requirement: &2152597760 !ruby/object:Gem::Requirement
|
28
50
|
none: false
|
29
51
|
requirements:
|
30
52
|
- - ! '>='
|
31
53
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
54
|
+
version: 0.7.3
|
33
55
|
type: :development
|
34
56
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
-
description: ! "It's like
|
37
|
-
syntax is incapable of expressing logic in the\n templates.\n
|
38
|
-
clean HTML. Your HTML authoring tool and browser will\n correctly
|
39
|
-
templates while you prototype your user interface.\n"
|
57
|
+
version_requirements: *2152597760
|
58
|
+
description: ! "It's like Mustache but you write the commands in HTML attributes.\n\n
|
59
|
+
\ * Extremely simple variable syntax is incapable of expressing logic in the\n templates.\n
|
60
|
+
\ * Templates are clean HTML. Your HTML authoring tool and browser will\n correctly
|
61
|
+
display the templates while you prototype your user interface.\n"
|
40
62
|
email: pukkaone@gmail.com
|
41
63
|
executables: []
|
42
64
|
extensions: []
|
@@ -46,12 +68,37 @@ files:
|
|
46
68
|
- lib/mullet/default_model.rb
|
47
69
|
- lib/mullet/default_nested_model.rb
|
48
70
|
- lib/mullet/html/attribute_command.rb
|
71
|
+
- lib/mullet/html/attributes.rb
|
49
72
|
- lib/mullet/html/command.rb
|
73
|
+
- lib/mullet/html/command_element_renderer.rb
|
74
|
+
- lib/mullet/html/element.rb
|
75
|
+
- lib/mullet/html/element_renderer.rb
|
76
|
+
- lib/mullet/html/filtered_element_handler.rb
|
77
|
+
- lib/mullet/html/for_element_renderer.rb
|
78
|
+
- lib/mullet/html/if_element_renderer.rb
|
79
|
+
- lib/mullet/html/layout.rb
|
80
|
+
- lib/mullet/html/message.rb
|
81
|
+
- lib/mullet/html/message_attribute_command.rb
|
82
|
+
- lib/mullet/html/model_attribute_command.rb
|
83
|
+
- lib/mullet/html/page_builder.rb
|
84
|
+
- lib/mullet/html/parser/attribute.rb
|
85
|
+
- lib/mullet/html/parser/constants.rb
|
86
|
+
- lib/mullet/html/parser/default_handler.rb
|
87
|
+
- lib/mullet/html/parser/input_stream.rb
|
88
|
+
- lib/mullet/html/parser/open_element.rb
|
89
|
+
- lib/mullet/html/parser/simple_parser.rb
|
90
|
+
- lib/mullet/html/parser/tokenizer.rb
|
91
|
+
- lib/mullet/html/remove_mode.rb
|
92
|
+
- lib/mullet/html/static_text_renderer.rb
|
93
|
+
- lib/mullet/html/template.rb
|
50
94
|
- lib/mullet/html/template_builder.rb
|
51
95
|
- lib/mullet/html/template_loader.rb
|
96
|
+
- lib/mullet/html/template_parser.rb
|
97
|
+
- lib/mullet/html/unless_element_renderer.rb
|
52
98
|
- lib/mullet/model.rb
|
53
99
|
- lib/mullet/render_context.rb
|
54
100
|
- lib/mullet/template_error.rb
|
101
|
+
- lib/mullet/tilt.rb
|
55
102
|
- lib/mullet/version.rb
|
56
103
|
- lib/mullet.rb
|
57
104
|
homepage: http://pukkaone.github.com/mullet/
|