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.
Files changed (37) hide show
  1. data/lib/mullet/container.rb +8 -4
  2. data/lib/mullet/default_model.rb +9 -9
  3. data/lib/mullet/default_nested_model.rb +7 -6
  4. data/lib/mullet/html/attribute_command.rb +8 -4
  5. data/lib/mullet/html/attributes.rb +22 -0
  6. data/lib/mullet/html/command.rb +4 -3
  7. data/lib/mullet/html/command_element_renderer.rb +19 -0
  8. data/lib/mullet/html/element.rb +41 -0
  9. data/lib/mullet/html/element_renderer.rb +261 -0
  10. data/lib/mullet/html/filtered_element_handler.rb +87 -0
  11. data/lib/mullet/html/for_element_renderer.rb +47 -0
  12. data/lib/mullet/html/if_element_renderer.rb +46 -0
  13. data/lib/mullet/html/layout.rb +48 -0
  14. data/lib/mullet/html/message.rb +55 -0
  15. data/lib/mullet/html/message_attribute_command.rb +30 -0
  16. data/lib/mullet/html/model_attribute_command.rb +30 -0
  17. data/lib/mullet/html/page_builder.rb +152 -0
  18. data/lib/mullet/html/parser/attribute.rb +8 -0
  19. data/lib/mullet/html/parser/constants.rb +1061 -0
  20. data/lib/mullet/html/parser/default_handler.rb +27 -0
  21. data/lib/mullet/html/parser/input_stream.rb +711 -0
  22. data/lib/mullet/html/parser/open_element.rb +77 -0
  23. data/lib/mullet/html/parser/simple_parser.rb +128 -0
  24. data/lib/mullet/html/parser/tokenizer.rb +1085 -0
  25. data/lib/mullet/html/remove_mode.rb +30 -0
  26. data/lib/mullet/html/static_text_renderer.rb +20 -0
  27. data/lib/mullet/html/template.rb +44 -0
  28. data/lib/mullet/html/template_builder.rb +208 -63
  29. data/lib/mullet/html/template_loader.rb +77 -39
  30. data/lib/mullet/html/template_parser.rb +48 -0
  31. data/lib/mullet/html/unless_element_renderer.rb +24 -0
  32. data/lib/mullet/model.rb +2 -5
  33. data/lib/mullet/render_context.rb +24 -18
  34. data/lib/mullet/tilt.rb +37 -0
  35. data/lib/mullet/version.rb +2 -1
  36. data/lib/mullet.rb +1 -0
  37. 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
- attr_accessor :escapeXmlEnabled
9
+
10
+ attr_accessor :escape_xml_enabled
7
11
 
8
12
  # Constructor.
9
13
  #
10
- # @param [Model] model
14
+ # @param [Object] data
11
15
  # provides data to render
12
- # @param [Proc] missingValueStrategy
16
+ # @param [Proc] missing_value_strategy
13
17
  # executed on attempt to render a variable that was not found
14
- # @param [Proc] nilValueStrategy
18
+ # @param [Proc] nil_value_strategy
15
19
  # executed on attempt to render nil value
16
20
  # @param [#<<] output
17
- # where rendered output will be written
18
- def initialize(model, missingValueStrategy, nilValueStrategy, output)
19
- @model = model
20
- @missingValueStrategy = missingValueStrategy
21
- @nilValueStrategy = nilValueStrategy
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
- @escapeXmlEnabled = true
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(key)
32
- return @escapeXmlEnabled ? CGI.escape_html(input) : input
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] key
42
+ # @param [Symbol] name
38
43
  # variable name
39
44
  # @return value
40
- def fetch(key)
41
- return @model.fetch(key)
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.fetch(key)
69
+ value = @model.get_variable_value(key)
64
70
  if value == Model::NOT_FOUND
65
- value = @missingValueStrategy.call(key)
71
+ value = @on_missing.call(key)
66
72
  end
67
73
  if value == nil
68
- value = @nilValueStrategy.call(key)
74
+ value = @on_nil.call(key)
69
75
  end
70
76
  return value
71
77
  end
@@ -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
@@ -1,3 +1,4 @@
1
1
  module Mullet
2
- VERSION = '0.0.0'
2
+ VERSION = '0.0.1
3
+ '
3
4
  end
data/lib/mullet.rb CHANGED
@@ -4,5 +4,6 @@ require 'mullet/model'
4
4
  require 'mullet/template_error'
5
5
  require 'mullet/version'
6
6
 
7
+ require 'mullet/html/layout'
7
8
  require 'mullet/html/template'
8
9
  require 'mullet/html/template_loader'
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.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-02 00:00:00.000000000 Z
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: &2152289140 !ruby/object:Gem::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: *2152289140
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: &2152288740 !ruby/object:Gem::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: '0'
54
+ version: 0.7.3
33
55
  type: :development
34
56
  prerelease: false
35
- version_requirements: *2152288740
36
- description: ! "It's like mustache but in HTML syntax.\n\n * Extremely simple variable
37
- syntax is incapable of expressing logic in the\n templates.\n * Templates are
38
- clean HTML. Your HTML authoring tool and browser will\n correctly display the
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/