malt 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
+