malt 0.1.1 → 0.2.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 (58) hide show
  1. data/History.rdoc +18 -0
  2. data/README.rdoc +6 -2
  3. data/lib/malt.rb +9 -0
  4. data/lib/malt/engines/abstract.rb +7 -7
  5. data/lib/malt/engines/bluecloth.rb +3 -3
  6. data/lib/malt/engines/builder.rb +72 -0
  7. data/lib/malt/engines/erb.rb +2 -0
  8. data/lib/malt/engines/erector.rb +59 -0
  9. data/lib/malt/engines/haml.rb +2 -2
  10. data/lib/malt/engines/kramdown.rb +6 -4
  11. data/lib/malt/engines/less.rb +8 -8
  12. data/lib/malt/engines/markaby.rb +51 -0
  13. data/lib/malt/engines/mustache.rb +44 -0
  14. data/lib/malt/engines/radius.rb +4 -4
  15. data/lib/malt/engines/ragtag.rb +49 -0
  16. data/lib/malt/engines/rdiscount.rb +1 -1
  17. data/lib/malt/engines/rdoc.rb +3 -3
  18. data/lib/malt/engines/redcloth.rb +1 -1
  19. data/lib/malt/engines/sass.rb +8 -8
  20. data/lib/malt/engines/tenjin.rb +6 -6
  21. data/lib/malt/formats/abstract.rb +8 -2
  22. data/lib/malt/formats/builder.rb +56 -0
  23. data/lib/malt/formats/css.rb +8 -8
  24. data/lib/malt/formats/erector.rb +53 -0
  25. data/lib/malt/formats/haml.rb +2 -2
  26. data/lib/malt/formats/html.rb +3 -3
  27. data/lib/malt/formats/latex.rb +4 -4
  28. data/lib/malt/formats/less.rb +5 -5
  29. data/lib/malt/formats/liquid.rb +11 -1
  30. data/lib/malt/formats/markaby.rb +53 -0
  31. data/lib/malt/formats/markdown.rb +6 -6
  32. data/lib/malt/formats/mustache.rb +34 -0
  33. data/lib/malt/formats/pdf.rb +2 -2
  34. data/lib/malt/formats/radius.rb +4 -4
  35. data/lib/malt/formats/{rtals.rb → ragtag.rb} +13 -9
  36. data/lib/malt/formats/rdoc.rb +4 -4
  37. data/lib/malt/formats/ruby.rb +2 -2
  38. data/lib/malt/formats/sass.rb +10 -0
  39. data/lib/malt/formats/scss.rb +10 -0
  40. data/lib/malt/formats/tenjin.rb +4 -4
  41. data/lib/malt/formats/textile.rb +12 -12
  42. data/lib/malt/formats/xml.rb +29 -0
  43. data/lib/malt/formats/yaml.rb +2 -2
  44. data/lib/malt/meta/data.rb +4 -4
  45. data/lib/malt/meta/{gemfile → package} +6 -2
  46. data/lib/malt/render.rb +37 -9
  47. data/meta/data.rb +4 -4
  48. data/meta/{gemfile → package} +6 -2
  49. data/qed/03_formats/08_ragtag.rdoc +19 -0
  50. data/qed/03_formats/17_markaby.rdoc +50 -0
  51. data/qed/03_formats/18_builder.rb +50 -0
  52. data/qed/03_formats/19_erector.rb +50 -0
  53. data/qed/03_formats/20_mustache.rdoc +54 -0
  54. data/{test/samples/sample.md → qed/samples/sample.markdown} +0 -0
  55. data/{test → qed}/samples/sample.rdoc +0 -0
  56. metadata +81 -12
  57. data/lib/malt/engines/rtals.rb +0 -46
  58. data/qed/03_formats/08_rtal.rdoc +0 -15
@@ -0,0 +1,34 @@
1
+ require 'malt/formats/abstract_template'
2
+ require 'malt/engines/mustache'
3
+
4
+ module Malt::Format
5
+
6
+ # Mustache templates
7
+ #
8
+ # http://github.com/defunkt/mustache
9
+ #
10
+ class Mustache < AbstractTemplate
11
+
12
+ register('mustache')
13
+
14
+ #
15
+ def mustache(*)
16
+ text
17
+ end
18
+
19
+ #
20
+ def to_mustache(*)
21
+ self
22
+ end
23
+
24
+ private
25
+
26
+ #
27
+ def render_engine
28
+ @render_engine ||= Malt::Engine::Mustache.new(options)
29
+ end
30
+
31
+ end
32
+
33
+ end
34
+
@@ -8,12 +8,12 @@ module Malt::Format
8
8
  register 'pdf'
9
9
 
10
10
  #
11
- def pdf
11
+ def pdf(*)
12
12
  text
13
13
  end
14
14
 
15
15
  #
16
- def to_pdf
16
+ def to_pdf(*)
17
17
  self
18
18
  end
19
19
 
@@ -13,22 +13,22 @@ module Malt::Format
13
13
  register('radius')
14
14
 
15
15
  #
16
- def radius
16
+ def radius(*)
17
17
  text
18
18
  end
19
19
 
20
20
  #
21
- def to_radius
21
+ def to_radius(*)
22
22
  self
23
23
  end
24
24
 
25
25
  #
26
- def html(data, &yld)
26
+ def html(data=nil, &yld)
27
27
  render_engine.render(:text=>text, :file=>file, :data=>data, &yld)
28
28
  end
29
29
 
30
30
  #
31
- def to_html(data, &yld)
31
+ def to_html(data=nil, &yld)
32
32
  text = html(data, &yld)
33
33
  opts = options.merge(:text=>text, :file=>refile(:html), :type=>:html)
34
34
  HTML.new(opts)
@@ -1,43 +1,47 @@
1
1
  require 'malt/formats/abstract'
2
2
  require 'malt/formats/html'
3
- require 'malt/engines/rtals'
3
+ require 'malt/formats/xml'
4
+ require 'malt/engines/ragtag'
4
5
 
5
6
  module Malt::Format
6
7
 
8
+ # RagTag
7
9
  #
8
- class Rtals < Abstract
10
+ # http://github.com/rubyworks/ragtag
11
+ #
12
+ class RagTag < Abstract
9
13
 
10
- register('rtal')
14
+ register('ragtag', 'rt')
11
15
 
12
16
  #
13
- def html(data, &yld)
17
+ def html(data=nil, &yld)
14
18
  render_engine.render(:text=>text, :data=>data, &yld)
15
19
  end
16
20
 
17
21
  #
18
- def to_html(data, &yld)
22
+ def to_html(data=nil, &yld)
19
23
  text = html(data, &yld)
20
24
  opts = options.merge(:text=>text, :file=>refile(:html), :type=>:html)
21
25
  HTML.new(opts)
22
26
  end
23
27
 
24
28
  #
25
- def xml(data, &yld)
29
+ def xml(data=nil, &yld)
26
30
  render_engine.render(:text=>text, :data=>data, &yld)
27
31
  end
28
32
 
29
33
  #
30
- def to_xml(data, &yld)
34
+ def to_xml(data=nil, &yld)
31
35
  text = xml(data, &yld)
32
36
  opts = options.merge(:text=>text, :file=>refile(:xml), :type=>:xml)
33
- HTML.new(opts)
37
+ XML.new(opts)
34
38
  end
35
39
 
36
40
  private
37
41
 
38
42
  #
39
43
  def render_engine
40
- @render_engine ||= Malt::Engine::RTALS.new(options)
44
+ @render_engine ||= Malt::Engine::RagTag.new(options)
41
45
  end
42
46
 
43
47
  end
@@ -10,22 +10,22 @@ module Malt::Format
10
10
  register('rdoc')
11
11
 
12
12
  #
13
- def rdoc
13
+ def rdoc(*)
14
14
  text
15
15
  end
16
16
 
17
17
  #
18
- def to_rdoc
18
+ def to_rdoc(*)
19
19
  self
20
20
  end
21
21
 
22
22
  #
23
- def html
23
+ def html(*)
24
24
  render_engine.render(:text=>text, :file=>file, :format=>:html)
25
25
  end
26
26
 
27
27
  #
28
- def to_html
28
+ def to_html(*)
29
29
  opts = options.merge(:text=>html, :file=>refile(:html), :type=>:html)
30
30
  HTML.new(opts)
31
31
  end
@@ -20,11 +20,11 @@ module Malt::Format
20
20
  register 'rb'
21
21
 
22
22
  #
23
- def rb ; text ; end
23
+ def rb(*) ; text ; end
24
24
  alias_method :ruby, :rb
25
25
 
26
26
  #
27
- def to_rb ; self ; end
27
+ def to_rb(*) ; self ; end
28
28
  alias_method :to_ruby, :to_rb
29
29
 
30
30
  #
@@ -10,6 +10,16 @@ module Malt::Format
10
10
 
11
11
  register 'sass'
12
12
 
13
+ #
14
+ def sass(*)
15
+ text
16
+ end
17
+
18
+ #
19
+ def to_sass(*)
20
+ self
21
+ end
22
+
13
23
  #
14
24
  def css(data=nil, &yld)
15
25
  render_engine.render(:format=>:css, :text=>text, :file=>file, :type=>type)
@@ -11,6 +11,16 @@ module Malt::Format
11
11
 
12
12
  register 'scss'
13
13
 
14
+ #
15
+ def scss(*)
16
+ text
17
+ end
18
+
19
+ #
20
+ def to_scss(*)
21
+ self
22
+ end
23
+
14
24
  #
15
25
  def css(data=nil, &yld)
16
26
  render_engine.render(:format=>:css, :text=>text, :file=>file, :type=>type)
@@ -12,12 +12,12 @@ module Malt::Format
12
12
 
13
13
  register 'tenjin'
14
14
 
15
- def rb
15
+ def rb(*)
16
16
  render_engine.compile(text, file)
17
17
  end
18
18
 
19
19
  # Erb templates can be "precompiled" into Ruby templates.
20
- def to_rb
20
+ def to_rb(*)
21
21
  text = rb
22
22
  Ruby.new(:text=>text, :file=>refile(:rb), :type=>:rb)
23
23
  end
@@ -25,12 +25,12 @@ module Malt::Format
25
25
  alias_method(:to_ruby, :to_rb)
26
26
 
27
27
  #
28
- def html
28
+ def html(data=nil, &yld)
29
29
  render(:html, data, &yld)
30
30
  end
31
31
 
32
32
  #
33
- def to_html(data, &yld)
33
+ def to_html(data=nil, &yld)
34
34
  new_text = render(:html, data, &yld)
35
35
  new_file = refile(:html)
36
36
  new_options = options.merge(:text=>new_text, :file=>new_file, :type=>:html)
@@ -9,12 +9,7 @@ module Malt::Format
9
9
  register('textile', 'tt')
10
10
 
11
11
  #
12
- def html
13
- render_engine.render(:format=>:html, :text=>text, :file=>file)
14
- end
15
-
16
- #
17
- def textile
12
+ def textile(*)
18
13
  text
19
14
  end
20
15
 
@@ -22,17 +17,22 @@ module Malt::Format
22
17
  alias_method :tt, :textile
23
18
 
24
19
  #
25
- def to_html
26
- opts = options.merge(:text=>html, :file=>refile(:html), :type=>:html)
27
- HTML.new(opts)
20
+ def to_textile(*)
21
+ self
28
22
  end
29
23
 
24
+ alias_method :to_tt, :to_textile
25
+
30
26
  #
31
- def to_textile
32
- self
27
+ def html(*)
28
+ render_engine.render(:format=>:html, :text=>text, :file=>file)
33
29
  end
34
30
 
35
- alias_method :to_tt, :to_textile
31
+ #
32
+ def to_html(*)
33
+ opts = options.merge(:text=>html, :file=>refile(:html), :type=>:html)
34
+ HTML.new(opts)
35
+ end
36
36
 
37
37
  #
38
38
  #def render_to(to, *)
@@ -0,0 +1,29 @@
1
+ require 'malt/formats/abstract'
2
+
3
+ module Malt::Format
4
+
5
+ # TODO: Add conversion to_html.
6
+ class XML < Abstract
7
+
8
+ register 'xml'
9
+
10
+ #
11
+ def xml(*)
12
+ text
13
+ end
14
+
15
+ # XML is XML ;)
16
+ def to_xml(*)
17
+ self
18
+ end
19
+
20
+ private
21
+
22
+ #
23
+ def render_engine
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
@@ -26,12 +26,12 @@ module Malt::Format
26
26
 
27
27
  # Converting a plan YAML file to HTML makes no sense so we
28
28
  # just wrap it in +pre+ tags.
29
- def html
29
+ def html(*)
30
30
  "<pre>\n#{h text}\n</pre>"
31
31
  end
32
32
 
33
33
  #
34
- def to_html
34
+ def to_html(*)
35
35
  text = html
36
36
  opts = options.merge(:text=>text, :file=>refile(:html), :type=>:html)
37
37
  HTML.new(opts)
@@ -4,10 +4,10 @@ module Malt
4
4
 
5
5
  DIRECTORY = File.dirname(__FILE__)
6
6
 
7
- def self.gemfile
8
- @gemfile ||= (
7
+ def self.package
8
+ @package ||= (
9
9
  require 'yaml'
10
- YAML.load(File.new(DIRECTORY + '/gemfile'))
10
+ YAML.load(File.new(DIRECTORY + '/package'))
11
11
  )
12
12
  end
13
13
 
@@ -20,7 +20,7 @@ module Malt
20
20
 
21
21
  def self.const_missing(name)
22
22
  key = name.to_s.downcase
23
- gemfile[key] || profile[key] || super(name)
23
+ package[key] || profile[key] || super(name)
24
24
  end
25
25
 
26
26
  end
@@ -1,6 +1,6 @@
1
1
  name : malt
2
- date : 2010-10-21
3
- version : 0.1.1
2
+ date : 2010-10-22
3
+ version : 0.2.0
4
4
 
5
5
  requires:
6
6
  - syckle (build)
@@ -14,4 +14,8 @@ requires:
14
14
  - rtals (test)
15
15
  - liquid (test)
16
16
  - erubis (test)
17
+ - mustache (test)
18
+ - erector (test)
19
+ - markaby (test)
20
+ - builder (test)
17
21
 
@@ -1,32 +1,54 @@
1
+ require 'malt/kernel'
1
2
  require 'malt/config'
2
3
  require 'malt/core_ext'
3
4
 
4
5
  module Malt
5
6
 
7
+ extend Kernel
8
+
6
9
  #
7
10
  def self.config
8
11
  @config ||= Config.new
9
12
  end
10
13
 
14
+ # Render template.
15
+ #
16
+ # parameters[:file] - File name of template. Used to read text.
17
+ # parameters[:text] - Text of template document.
18
+ # parameters[:type] - File type/extension used to look up engine.
19
+ # parameters[:pass] - If not a supported type return text rather than raise an error.
20
+ # parameters[:engine] - Force the use of a this specific engine.
21
+ # parameters[:to] - Format to convert to (usual default is `html`).
11
22
  #
12
23
  def self.render(parameters={}, &body)
13
24
  type = parameters[:type]
14
25
  file = parameters[:file]
26
+ text = parameters[:text]
15
27
  engine = parameters[:engine]
16
28
 
17
- type = file_type(file) unless type
29
+ type = file_type(file, type)
18
30
  text = file_read(file) unless text
19
- engine = engine(type, engine).new
20
31
 
21
- parameters[:type] = type
22
- parameters[:text] = text
32
+ engine_class = engine(type, engine)
33
+
34
+ if engine_class
35
+ parameters[:type] = type
36
+ parameters[:text] = text
23
37
 
24
- engine.render(parameters, &body)
38
+ engine = engine_class.new
39
+ engine.render(parameters, &body)
40
+ else
41
+ if parameters[:pass]
42
+ text
43
+ else
44
+ raise "no engine to handle `#{type}' format"
45
+ end
46
+ end
25
47
  end
26
48
 
27
49
  #
28
50
  def self.engine(type, engine=nil)
29
- type = type.to_sym
51
+ type = ext_to_type(type)
30
52
  engine = engine || config.engine[type]
31
53
  case engine
32
54
  when Class
@@ -39,14 +61,14 @@ module Malt
39
61
  if Engine.registry[type]
40
62
  Engine.registry[type].first
41
63
  else
42
- raise "no engine to handle `#{type}' format"
64
+ nil
43
65
  end
44
66
  end
45
67
  end
46
68
 
47
69
  #
48
- def self.file_type(file)
49
- ext = File.extname(file)
70
+ def self.file_type(file, type=nil)
71
+ ext = type || File.extname(file)
50
72
  ext = ext.to_s.downcase
51
73
  if ext.empty?
52
74
  nil
@@ -57,9 +79,15 @@ module Malt
57
79
  end
58
80
  end
59
81
 
82
+ #
83
+ #def self.ext_type(type)
84
+ # type.to_s.downcase.sub(/^\./,'').to_sym
85
+ #end
86
+
60
87
  # TODO: Handle File objects and URLs.
61
88
  def self.file_read(file)
62
89
  File.read(file)
63
90
  end
64
91
 
65
92
  end
93
+