malt 0.3.0 → 0.4.0

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 (155) hide show
  1. data/.ruby +156 -0
  2. data/Assembly +28 -0
  3. data/COPYING.rdoc +33 -0
  4. data/Gemfile +10 -0
  5. data/HISTORY.rdoc +102 -0
  6. data/README.rdoc +16 -10
  7. data/Reapfile +4 -0
  8. data/lib/malt.rb +36 -8
  9. data/lib/malt.yml +156 -0
  10. data/lib/malt/conversions.rb +42 -0
  11. data/lib/malt/core_ext.rb +81 -3
  12. data/lib/malt/engines/abstract.rb +259 -50
  13. data/lib/malt/engines/bluecloth.rb +19 -9
  14. data/lib/malt/engines/builder.rb +93 -32
  15. data/lib/malt/engines/coffee.rb +46 -0
  16. data/lib/malt/engines/creole.rb +60 -0
  17. data/lib/malt/engines/erb.rb +69 -44
  18. data/lib/malt/engines/erector.rb +61 -30
  19. data/lib/malt/engines/erubis.rb +41 -31
  20. data/lib/malt/engines/haml.rb +13 -37
  21. data/lib/malt/engines/kramdown.rb +40 -15
  22. data/lib/malt/engines/less.rb +15 -14
  23. data/lib/malt/engines/liquid.rb +24 -14
  24. data/lib/malt/engines/markaby.rb +44 -22
  25. data/lib/malt/engines/maruku.rb +89 -0
  26. data/lib/malt/engines/mustache.rb +20 -14
  27. data/lib/malt/engines/nokogiri.rb +89 -0
  28. data/lib/malt/engines/radius.rb +72 -34
  29. data/lib/malt/engines/ragtag.rb +26 -18
  30. data/lib/malt/engines/rdiscount.rb +18 -11
  31. data/lib/malt/engines/rdoc.rb +21 -15
  32. data/lib/malt/engines/redcarpet.rb +137 -0
  33. data/lib/malt/engines/redcloth.rb +15 -7
  34. data/lib/malt/engines/ruby.rb +13 -12
  35. data/lib/malt/engines/sass.rb +30 -17
  36. data/lib/malt/engines/string.rb +36 -0
  37. data/lib/malt/engines/tenjin.rb +70 -27
  38. data/lib/malt/engines/wikicloth.rb +48 -0
  39. data/lib/malt/formats/abstract.rb +90 -29
  40. data/lib/malt/formats/abstract_template.rb +10 -8
  41. data/lib/malt/formats/builder.rb +39 -13
  42. data/lib/malt/formats/coffee.rb +54 -0
  43. data/lib/malt/formats/css.rb +3 -3
  44. data/lib/malt/formats/erb.rb +31 -66
  45. data/lib/malt/formats/haml.rb +8 -8
  46. data/lib/malt/formats/html.rb +1 -7
  47. data/lib/malt/formats/javascript.rb +27 -0
  48. data/lib/malt/formats/latex.rb +1 -1
  49. data/lib/malt/formats/less.rb +13 -11
  50. data/lib/malt/formats/liquid.rb +7 -7
  51. data/lib/malt/formats/markdown.rb +43 -44
  52. data/lib/malt/formats/mediawiki.rb +70 -0
  53. data/lib/malt/formats/mustache.rb +5 -5
  54. data/lib/malt/formats/pdf.rb +1 -7
  55. data/lib/malt/formats/radius.rb +5 -4
  56. data/lib/malt/formats/ragtag.rb +14 -13
  57. data/lib/malt/formats/rbhtml.rb +28 -20
  58. data/lib/malt/formats/rdoc.rb +5 -4
  59. data/lib/malt/formats/rhtml.rb +19 -43
  60. data/lib/malt/formats/ruby.rb +11 -45
  61. data/lib/malt/formats/sass.rb +16 -24
  62. data/lib/malt/formats/scss.rb +13 -30
  63. data/lib/malt/formats/string.rb +61 -0
  64. data/lib/malt/formats/tenjin.rb +4 -4
  65. data/lib/malt/formats/text.rb +1 -1
  66. data/lib/malt/formats/textile.rb +7 -19
  67. data/lib/malt/kernel.rb +1 -2
  68. data/lib/malt/machine.rb +83 -13
  69. data/lib/malt/tilted.rb +216 -0
  70. data/lib/malt/version.rb +21 -0
  71. data/test/helper.rb +15 -0
  72. data/test/unit/engines/case_engine_bluecloth.rb +40 -0
  73. data/test/unit/engines/case_engine_builder.rb +30 -0
  74. data/test/unit/engines/case_engine_coffee.rb +30 -0
  75. data/test/unit/engines/case_engine_creole.rb +35 -0
  76. data/test/unit/engines/case_engine_erb.rb +28 -0
  77. data/test/unit/engines/case_engine_erector.rb +36 -0
  78. data/test/unit/engines/case_engine_erubis.rb +28 -0
  79. data/test/unit/engines/case_engine_haml.rb +30 -0
  80. data/test/unit/engines/case_engine_kramdown.rb +30 -0
  81. data/test/unit/engines/case_engine_less.rb +40 -0
  82. data/test/unit/engines/case_engine_liquid.rb +28 -0
  83. data/test/unit/engines/case_engine_markaby.rb +20 -0
  84. data/test/unit/engines/case_engine_maruku.rb +30 -0
  85. data/test/unit/engines/case_engine_mustache.rb +28 -0
  86. data/test/unit/engines/case_engine_nokogiri.rb +30 -0
  87. data/test/unit/engines/case_engine_radius.rb +30 -0
  88. data/test/unit/engines/case_engine_ragtag.rb +40 -0
  89. data/test/unit/engines/case_engine_rdiscount.rb +30 -0
  90. data/test/unit/engines/case_engine_rdoc.rb +31 -0
  91. data/test/unit/engines/case_engine_redcarpet.rb +30 -0
  92. data/test/unit/engines/case_engine_redcloth.rb +31 -0
  93. data/test/unit/engines/case_engine_ruby.rb +28 -0
  94. data/test/unit/engines/case_engine_sass.rb +36 -0
  95. data/test/unit/engines/case_engine_string.rb +28 -0
  96. data/test/unit/engines/case_engine_tenjin.rb +28 -0
  97. data/test/unit/engines/case_engine_wikicloth.rb +25 -0
  98. data/test/unit/machine.rb +27 -0
  99. data/test/unit/malt.rb +12 -0
  100. metadata +364 -266
  101. data/History.rdoc +0 -64
  102. data/License.txt +0 -205
  103. data/Syckfile +0 -80
  104. data/features/consistent_rendering.feature +0 -36
  105. data/features/samples/sample.erb +0 -1
  106. data/features/samples/sample.erubis +0 -1
  107. data/features/samples/sample.liquid +0 -1
  108. data/features/samples/sample.mustache +0 -1
  109. data/features/samples/sample.radius +0 -1
  110. data/features/step_definitions/engine_steps.rb +0 -49
  111. data/features/support/loadpath.rb +0 -1
  112. data/features/support/sample_class.rb +0 -8
  113. data/lib/malt/formats/erector.rb +0 -53
  114. data/lib/malt/formats/markaby.rb +0 -53
  115. data/lib/malt/meta/data.rb +0 -26
  116. data/lib/malt/meta/package +0 -21
  117. data/lib/malt/meta/profile +0 -21
  118. data/meta/data.rb +0 -26
  119. data/meta/package +0 -21
  120. data/meta/profile +0 -21
  121. data/qed/01_overview.rdoc +0 -8
  122. data/qed/02_formats.rdoc +0 -39
  123. data/qed/03_formats/01_overview.rdoc +0 -7
  124. data/qed/03_formats/02_rdoc.rdoc +0 -83
  125. data/qed/03_formats/03_textile.rdoc +0 -48
  126. data/qed/03_formats/04_markdown.rdoc +0 -66
  127. data/qed/03_formats/05_erb.rdoc +0 -65
  128. data/qed/03_formats/06_liquid.rdoc +0 -54
  129. data/qed/03_formats/07_haml.rdoc +0 -44
  130. data/qed/03_formats/08_ragtag.rdoc +0 -19
  131. data/qed/03_formats/09_radius.rdoc +0 -43
  132. data/qed/03_formats/11_tenjin.rdoc +0 -47
  133. data/qed/03_formats/12_rbhtml.rdoc +0 -55
  134. data/qed/03_formats/13_sass.rdoc +0 -55
  135. data/qed/03_formats/14_scss.rdoc +0 -58
  136. data/qed/03_formats/15_less.rdoc +0 -46
  137. data/qed/03_formats/16_ruby.rdoc +0 -48
  138. data/qed/03_formats/17_markaby.rdoc +0 -50
  139. data/qed/03_formats/18_builder.rb +0 -50
  140. data/qed/03_formats/19_erector.rb +0 -50
  141. data/qed/03_formats/20_mustache.rdoc +0 -54
  142. data/qed/05_machine/01_limited_formats.rdoc +0 -29
  143. data/qed/05_machine/02_prioritized_engines.rdoc +0 -34
  144. data/qed/applique/malt.rb +0 -13
  145. data/qed/samples/data.yml +0 -4
  146. data/qed/samples/output-erb.txt +0 -1
  147. data/qed/samples/output-liquid.txt +0 -1
  148. data/qed/samples/output-mustache.txt +0 -1
  149. data/qed/samples/output-radius.txt +0 -1
  150. data/qed/samples/sample.erb +0 -1
  151. data/qed/samples/sample.liquid +0 -1
  152. data/qed/samples/sample.markdown +0 -308
  153. data/qed/samples/sample.mustache +0 -1
  154. data/qed/samples/sample.radius +0 -1
  155. data/qed/samples/sample.rdoc +0 -8
@@ -1 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__)+'/../../lib')
@@ -1,8 +0,0 @@
1
- class SampleObject
2
- attr :name
3
- attr :state
4
- def initialize(name,state)
5
- @name = name
6
- @state = state
7
- end
8
- end
@@ -1,53 +0,0 @@
1
- require 'malt/formats/abstract'
2
- require 'malt/formats/html'
3
- require 'malt/engines/erector'
4
-
5
- module Malt::Format
6
-
7
- # Erecotr looks like a Markup format, but it is a template format
8
- # Much like pure Ruby too.
9
- class Erector < Abstract
10
-
11
- register 'erector'
12
-
13
- #
14
- def erector(*)
15
- text
16
- end
17
-
18
- #
19
- def to_erector(*)
20
- self
21
- end
22
-
23
- #
24
- def html(data=nil, &yld)
25
- render_engine.render(:format=>:html, :text=>text, :file=>file, :data=>data, &yld)
26
- end
27
-
28
- #
29
- def to_html(data=nil, &yld)
30
- text = html(data, &yld)
31
- opts = options.merge(:text=>text, :file=>refile(:html), :type=>:html)
32
- HTML.new(opts)
33
- end
34
-
35
- #
36
- #def to_ruby(db, &yld)
37
- # @ruby ||= (
38
- # source = engine.compile(text, file)
39
- # Ruby.new(:text=>source, :file=>refile(:rb))
40
- # )
41
- #end
42
-
43
- private
44
-
45
- #
46
- def render_engine
47
- @render_engine ||= Malt::Engine::Erector.new(options)
48
- end
49
-
50
- end
51
-
52
- end
53
-
@@ -1,53 +0,0 @@
1
- require 'malt/formats/abstract'
2
- require 'malt/formats/html'
3
- require 'malt/engines/markaby'
4
-
5
- module Malt::Format
6
-
7
- # Erecotr looks like a Markup format, but it is a template format
8
- # Much like pure Ruby too.
9
- class Markaby < Abstract
10
-
11
- register 'markaby', 'mab'
12
-
13
- #
14
- def markaby(*)
15
- text
16
- end
17
-
18
- #
19
- def to_markaby(*)
20
- self
21
- end
22
-
23
- #
24
- def html(data=nil, &yld)
25
- render_engine.render(:format=>:html, :text=>text, :file=>file, :data=>data, &yld)
26
- end
27
-
28
- #
29
- def to_html(data=nil, &yld)
30
- text = html(data, &yld)
31
- opts = options.merge(:text=>text, :file=>refile(:html), :type=>:html)
32
- HTML.new(opts)
33
- end
34
-
35
- #
36
- #def to_ruby(db, &yld)
37
- # @ruby ||= (
38
- # source = engine.compile(text, file)
39
- # Ruby.new(:text=>source, :file=>refile(:rb))
40
- # )
41
- #end
42
-
43
- private
44
-
45
- #
46
- def render_engine
47
- @render_engine ||= Malt::Engine::Markaby.new(options)
48
- end
49
-
50
- end
51
-
52
- end
53
-
@@ -1,26 +0,0 @@
1
- Object.__send__(:remove_const, :VERSION) if Object.const_defined?(:VERSION) # becuase Ruby 1.8~ gets in the way
2
-
3
- module Malt
4
-
5
- DIRECTORY = File.dirname(__FILE__)
6
-
7
- def self.package
8
- @package ||= (
9
- require 'yaml'
10
- YAML.load(File.new(DIRECTORY + '/package'))
11
- )
12
- end
13
-
14
- def self.profile
15
- @profile ||= (
16
- require 'yaml'
17
- YAML.load(File.new(DIRECTORY + '/profile'))
18
- )
19
- end
20
-
21
- def self.const_missing(name)
22
- key = name.to_s.downcase
23
- package[key] || profile[key] || super(name)
24
- end
25
-
26
- end
@@ -1,21 +0,0 @@
1
- name : malt
2
- date : 2010-11-04
3
- version : 0.3.0
4
-
5
- requires:
6
- - syckle (build)
7
- - qed (test)
8
- - rdoc (test)
9
- - redcloth (test)
10
- - bluecloth (test)
11
- - kramdown (test)
12
- - haml (test)
13
- - tenjin (test)
14
- - rtals (test)
15
- - liquid (test)
16
- - erubis (test)
17
- - mustache (test)
18
- - erector (test)
19
- - markaby (test)
20
- - builder (test)
21
-
@@ -1,21 +0,0 @@
1
- title : Malt
2
- summary: Multi-template/multi-markup rendering engine
3
- contact: trans <transfire@gmail.com>
4
- created: 2010-06-22
5
-
6
- authors:
7
- - Thomas Sawyer
8
-
9
- description:
10
- Malt provides a factory framework for rendering
11
- a variety of template and markup document formats.
12
-
13
- resources:
14
- home: http://rubyworks.github.com/malt
15
- code: http://github.com/rubyworks/malt
16
- wiki: http://wiki.github.com/rubyworks/malt
17
- docs: http://rubyworks.github.com/malt/docs/api
18
- bugs: http://github.com/rubyworks/malt/issues
19
-
20
- copyright:
21
- Copyright (c) 2010 Thomas Sawyer
@@ -1,26 +0,0 @@
1
- Object.__send__(:remove_const, :VERSION) if Object.const_defined?(:VERSION) # becuase Ruby 1.8~ gets in the way
2
-
3
- module Malt
4
-
5
- DIRECTORY = File.dirname(__FILE__)
6
-
7
- def self.package
8
- @package ||= (
9
- require 'yaml'
10
- YAML.load(File.new(DIRECTORY + '/package'))
11
- )
12
- end
13
-
14
- def self.profile
15
- @profile ||= (
16
- require 'yaml'
17
- YAML.load(File.new(DIRECTORY + '/profile'))
18
- )
19
- end
20
-
21
- def self.const_missing(name)
22
- key = name.to_s.downcase
23
- package[key] || profile[key] || super(name)
24
- end
25
-
26
- end
@@ -1,21 +0,0 @@
1
- name : malt
2
- date : 2010-11-04
3
- version : 0.3.0
4
-
5
- requires:
6
- - syckle (build)
7
- - qed (test)
8
- - rdoc (test)
9
- - redcloth (test)
10
- - bluecloth (test)
11
- - kramdown (test)
12
- - haml (test)
13
- - tenjin (test)
14
- - rtals (test)
15
- - liquid (test)
16
- - erubis (test)
17
- - mustache (test)
18
- - erector (test)
19
- - markaby (test)
20
- - builder (test)
21
-
@@ -1,21 +0,0 @@
1
- title : Malt
2
- summary: Multi-template/multi-markup rendering engine
3
- contact: trans <transfire@gmail.com>
4
- created: 2010-06-22
5
-
6
- authors:
7
- - Thomas Sawyer
8
-
9
- description:
10
- Malt provides a factory framework for rendering
11
- a variety of template and markup document formats.
12
-
13
- resources:
14
- home: http://rubyworks.github.com/malt
15
- code: http://github.com/rubyworks/malt
16
- wiki: http://wiki.github.com/rubyworks/malt
17
- docs: http://rubyworks.github.com/malt/docs/api
18
- bugs: http://github.com/rubyworks/malt/issues
19
-
20
- copyright:
21
- Copyright (c) 2010 Thomas Sawyer
@@ -1,8 +0,0 @@
1
- = Introduction
2
-
3
- Malt is a multi-template rendering framework. It provides two convenient
4
- interfaces for working with backend template systems. The first is
5
- a functional interface via `Malt.render` method. And the second is an
6
- object-oriented interface that can be easily constructed via the
7
- `Malt.file` or `Malt.text` methods.
8
-
@@ -1,39 +0,0 @@
1
- = Formats
2
-
3
- We have created a set of sample documents in the samples directory.
4
- We will take each format in turn.
5
-
6
- formats = %w{erb liquid}
7
-
8
- Included with the format samples are files containing the expected results
9
- of each rendering.
10
-
11
- expected_output = {}
12
-
13
- formats.each do |format|
14
- expected_output[format] = File.read("qed/samples/output-#{format}.txt")
15
- end
16
-
17
- The data to inject into the formats that interpolate, is also stored in the
18
- samples folder.
19
-
20
- data = YAML.load(File.new('qed/samples/data.yml'))
21
-
22
- Now we can render each of thes formats, and verify we get the expected result.
23
-
24
- formats.each do |format|
25
- output = Malt.render(:file=>"qed/samples/sample.#{format}", :format=>format, :data=>data)
26
- output.assert == expected_output[format]
27
- end
28
-
29
- Notice that formats the do not use interpolation data simply ignore it even
30
- if it is given.
31
-
32
- We can also handle the files in a more object-oriented manner.
33
-
34
- formats.each do |format|
35
- object = Malt.file("qed/samples/sample.#{format}", :format=>format)
36
- output = object.render(data)
37
- output.assert == expected_output[format]
38
- end
39
-
@@ -1,7 +0,0 @@
1
- = Formats
2
-
3
- Malt support a wide variety of markup and template systems.
4
-
5
- Malt provides two distinct APIs for rendering each format --a single-point-of-entry
6
- functional interface, `Malt.render`, and an object-oriented interface where by
7
- each format is represented by a document class.
@@ -1,83 +0,0 @@
1
- == RDoc
2
-
3
- Lets say we have a RDoc document called 'test.rdoc' containing:
4
-
5
- = Example
6
-
7
- This is an example of RDoc rendering.
8
-
9
- We can convert rdoc documents to html easily via the univeral +render+ function.
10
-
11
- html = Malt.render(:file=>'tmp/test.rdoc')
12
-
13
- html.assert.include?('<h1>Example</h1>')
14
-
15
- Malt recognizes the type of file by the '.rdoc' extension and renders it using
16
- the default redering engine (in this case RDoc itself). By default the engine
17
- renders to HTML, so we did not need to specify the output :format option to
18
- the +render+ method.
19
-
20
- If we have a file that has a different extension, but is in fact an RDoc
21
- document, we can inform Malt.
22
-
23
- Lets say we have an RDoc document called 'test.txt' containing:
24
-
25
- = Example
26
-
27
- This is an example of RDoc rendering.
28
-
29
- We can inform Malt as the actual type using the `:type` option.
30
-
31
- html = Malt.render(:file=>'tmp/test.txt', :type=>:rdoc)
32
-
33
- html.assert.include?('<h1>Example</h1>')
34
-
35
- Alternately we can use the object-oriented interface. Again, lets say we have
36
- an RDoc document called 'test.rdoc' containing ...
37
-
38
- = Example
39
-
40
- This is an example of RDOC rendering.
41
-
42
- Then we can use the `Malt.file` method to instantiate an RDoc object.
43
-
44
- rdoc = Malt.file('tmp/test.rdoc')
45
-
46
- We will notice that the output is an instance of Malt::Formats::HTML.
47
-
48
- rdoc.class.assert == Malt::Format::RDoc
49
-
50
- While we could have used `Malt::Formats::RDoc.new` to create the object directly,
51
- Malt provides the #file, as well as #text, methods for convience. We can convert
52
- the rdoc to html with the #to_html method.
53
-
54
- html = rdoc.to_html
55
-
56
- Again notice that the output is an instance of Malt::Format::HTML.
57
-
58
- html.class.assert == Malt::Format::HTML
59
-
60
- And that by calling #to_s we can get the rendered HTML document.
61
-
62
- html.to_s.assert.include?('<h1>Example</h1>')
63
-
64
- We can convert rdoc documents to html very easily.
65
-
66
- rdoc = Malt.file('tmp/test.rdoc')
67
-
68
- html = rdoc.to_html
69
-
70
- First we will notice that the output is an instance of Malt::Format::HTML.
71
-
72
- html.class.assert == Malt::Format::HTML
73
-
74
- And that by calling #to_s we can get the rendered HTML document.
75
-
76
- html.to_s.assert.include?('<h1>Example</h1>')
77
-
78
- Or we can convert the RDoc document directly to HTML via the #html method.
79
-
80
- out = rdoc.html
81
-
82
- out.assert.include?('<h1>Example</h1>')
83
-
@@ -1,48 +0,0 @@
1
- == Textile
2
-
3
- Malt supports Textile via RedCloth.
4
-
5
- Lets say we have a Textile document called 'test.tt' containing ...
6
-
7
- h1. Example
8
-
9
- This is an example of Textile rendering.
10
-
11
- We can redner the textile document via the universal render function.
12
- Textile documents are recognized by the +.textile+ or +.tt+ extension.
13
-
14
- html = Malt.render(:file=>'tmp/test.tt')
15
-
16
- html.assert.include?('<h1>Example</h1>')
17
-
18
- Malt supports Textile via either the RedCloth or the ___ backend.
19
-
20
- Lets say we have an Textile document called 'test.tt' containing ...
21
-
22
- h1. Example
23
-
24
- This is an example of Textile rendering.
25
-
26
- We can access the file via the +Malt.file+ method. Textile documents are
27
- recognized by the +.textile+ or +.tt+ extension.
28
-
29
- tile = Malt.file('tmp/test.tt')
30
-
31
- We can the convert the document to a Malt Html object via the #to_html method.
32
-
33
- html = tile.to_html
34
-
35
- Notice that the output is an instance of Malt::Format::HTML.
36
-
37
- html.class.assert == Malt::Format::HTML
38
-
39
- And that by calling #to_s we can get the rendered HTML document.
40
-
41
- html.to_s.assert.include?('<h1>Example</h1>')
42
-
43
- Or we can convert the document directly to HTML via the #html method.
44
-
45
- out = tile.html
46
-
47
- out.assert.include?('<h1>Example</h1>')
48
-