maruku 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 (108) hide show
  1. data/bin/{maruku0.3 → marudown} +6 -14
  2. data/bin/maruku +1 -1
  3. data/bin/marutest +37 -9
  4. data/docs/TOFIX.html +22 -0
  5. data/docs/TOFIX.md +3 -0
  6. data/docs/changelog-0.2.13.html +30 -0
  7. data/docs/changelog-0.2.13.md +6 -0
  8. data/docs/changelog-0.3.html +19 -5
  9. data/docs/faq.html +51 -40
  10. data/docs/faq.md +3 -3
  11. data/docs/hidden_o_n_squared.md +10 -0
  12. data/docs/index.html +84 -396
  13. data/docs/markdown_syntax.html +139 -330
  14. data/docs/markdown_syntax.md +80 -93
  15. data/docs/maruku.html +84 -396
  16. data/docs/maruku.md +88 -158
  17. data/docs/proposal.html +13 -106
  18. data/docs/proposal.md +3 -3
  19. data/docs/todo.html +38 -28
  20. data/lib/maruku.rb +77 -11
  21. data/lib/maruku/attributes.rb +186 -0
  22. data/lib/maruku/defaults.rb +40 -0
  23. data/lib/maruku/errors_management.rb +55 -39
  24. data/lib/maruku/helpers.rb +156 -72
  25. data/lib/maruku/input/charsource.rb +319 -0
  26. data/lib/maruku/{html_helper.rb → input/html_helper.rb} +30 -9
  27. data/lib/maruku/input/linesource.rb +111 -0
  28. data/lib/maruku/input/parse_block.rb +562 -0
  29. data/lib/maruku/{parse_doc.rb → input/parse_doc.rb} +60 -28
  30. data/lib/maruku/{parse_span_better.rb → input/parse_span_better.rb} +226 -256
  31. data/lib/maruku/input/type_detection.rb +137 -0
  32. data/lib/maruku/maruku.rb +33 -0
  33. data/lib/maruku/{to_html.rb → output/to_html.rb} +151 -132
  34. data/lib/maruku/{to_latex.rb → output/to_latex.rb} +31 -35
  35. data/lib/maruku/{to_latex_entities.rb → output/to_latex_entities.rb} +25 -3
  36. data/lib/maruku/output/to_latex_strings.rb +64 -0
  37. data/lib/maruku/output/to_markdown.rb +164 -0
  38. data/lib/maruku/{to_s.rb → output/to_s.rb} +6 -0
  39. data/lib/maruku/string_utils.rb +12 -181
  40. data/lib/maruku/structures.rb +91 -67
  41. data/lib/maruku/structures_inspect.rb +78 -0
  42. data/lib/maruku/structures_iterators.rb +24 -2
  43. data/lib/maruku/tests/benchmark.rb +41 -9
  44. data/lib/maruku/tests/new_parser.rb +317 -286
  45. data/lib/maruku/tests/tests.rb +20 -0
  46. data/lib/maruku/toc.rb +64 -64
  47. data/lib/maruku/usage/example1.rb +33 -0
  48. data/lib/maruku/version.rb +8 -2
  49. data/tests/unittest/abbreviations.md +27 -16
  50. data/tests/unittest/attributes/attributes.md +89 -0
  51. data/tests/unittest/attributes/circular.md +51 -0
  52. data/tests/unittest/attributes/default.md +47 -0
  53. data/tests/unittest/blank.md +10 -6
  54. data/tests/unittest/blanks_in_code.md +26 -26
  55. data/tests/unittest/code.md +9 -9
  56. data/tests/unittest/code2.md +12 -13
  57. data/tests/unittest/code3.md +34 -34
  58. data/tests/unittest/easy.md +9 -7
  59. data/tests/unittest/email.md +9 -7
  60. data/tests/unittest/encoding/iso-8859-1.md +41 -4
  61. data/tests/unittest/encoding/utf-8.md +6 -5
  62. data/tests/unittest/entities.md +52 -80
  63. data/tests/unittest/escaping.md +47 -35
  64. data/tests/unittest/extra_dl.md +19 -29
  65. data/tests/unittest/extra_header_id.md +31 -24
  66. data/tests/unittest/extra_table1.md +14 -32
  67. data/tests/unittest/footnotes.md +58 -42
  68. data/tests/unittest/headers.md +11 -11
  69. data/tests/unittest/hrule.md +14 -24
  70. data/tests/unittest/images.md +41 -26
  71. data/tests/unittest/inline_html.md +104 -56
  72. data/tests/unittest/inline_html2.md +38 -0
  73. data/tests/unittest/links.md +74 -33
  74. data/tests/unittest/list1.md +18 -15
  75. data/tests/unittest/list2.md +31 -13
  76. data/tests/unittest/list3.md +29 -28
  77. data/tests/unittest/list4.md +103 -12
  78. data/tests/unittest/lists.md +86 -53
  79. data/tests/unittest/lists6.md +53 -0
  80. data/tests/unittest/lists7.md +31 -0
  81. data/tests/unittest/lists_after_paragraph.md +105 -71
  82. data/tests/unittest/lists_ol.md +149 -73
  83. data/tests/unittest/misc_sw.md +366 -326
  84. data/tests/unittest/notyet/escape.md +10 -10
  85. data/tests/unittest/notyet/header_after_par.md +20 -14
  86. data/tests/unittest/notyet/ticks.md +8 -35
  87. data/tests/unittest/notyet/triggering.md +72 -45
  88. data/tests/unittest/olist.md +78 -0
  89. data/tests/unittest/one.md +5 -3
  90. data/tests/unittest/paragraph.md +5 -3
  91. data/tests/unittest/paragraph_rules/dont_merge_ref.md +15 -9
  92. data/tests/unittest/paragraph_rules/tab_is_blank.md +9 -5
  93. data/tests/unittest/paragraphs.md +21 -26
  94. data/tests/unittest/recover/recover_links.md +6 -5
  95. data/tests/unittest/references/long_example.md +39 -30
  96. data/tests/unittest/references/spaces_and_numbers.md +2 -2
  97. data/tests/unittest/syntax_hl.md +33 -31
  98. data/tests/unittest/test.md +4 -6
  99. data/tests/unittest/wrapping.md +43 -26
  100. metadata +160 -139
  101. data/docs/markdown_extra2.html +0 -87
  102. data/docs/markdown_extra2.md +0 -83
  103. data/docs/markdown_syntax_2.html +0 -152
  104. data/lib/maruku/parse_block.rb +0 -564
  105. data/lib/maruku/parse_span.rb +0 -451
  106. data/lib/maruku/to_latex_strings.rb +0 -59
  107. data/lib/maruku/to_markdown.rb +0 -110
  108. data/lib/test.rb +0 -29
@@ -2,9 +2,6 @@
2
2
 
3
3
  require 'maruku'
4
4
 
5
- require 'maruku/parse_span_better'
6
-
7
- #if File.basename($0) =~ /^maruku/
8
5
  # If we are given filenames, convert each file
9
6
  if not ARGV.empty?
10
7
  ARGV.each do |f|
@@ -14,24 +11,19 @@ require 'maruku/parse_span_better'
14
11
  input = File.open(f,'r').read
15
12
 
16
13
  # create Maruku
17
- doc = Maruku.new(input)
18
-
19
- # puts doc.inspect
14
+ doc = Maruku.new(input, {:on_error=>:warning})
20
15
  # convert to a complete html document
21
- html = doc.to_html_document({:indent=>1})
16
+ output = doc.to_md
22
17
 
23
18
  # write to file
24
19
  dir = File.dirname(f)
25
- filename = File.basename(f, File.extname(f)) + ".html"
20
+ filename = File.basename(f, File.extname(f)) + ".txt"
26
21
 
27
- out_xml = File.join(dir, filename)
28
- File.open(out_xml,'w') do |f| f.puts html end
22
+ output = File.join(dir, filename)
23
+ File.open(output,'w') do |f| f.puts html end
29
24
  end
30
25
  else
31
26
  # else, act as a filter
32
27
  data = $stdin.read
33
- puts Maruku.new(data).to_html
28
+ puts Maruku.new(data, {:on_error=>:warning}).to_md
34
29
  end
35
- #eend
36
-
37
-
data/bin/maruku CHANGED
@@ -26,7 +26,7 @@ if File.basename($0) =~ /^maruku/
26
26
  else
27
27
  # else, act as a filter
28
28
  data = $stdin.read
29
- puts Maruku.new(data).to_html
29
+ puts Maruku.new(data, {:on_error=>:warning}).to_html
30
30
  end
31
31
  end
32
32
 
data/bin/marutest CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  require 'maruku'
4
4
 
5
- require 'maruku/parse_span_better'
6
-
7
5
  #MARKER = "\n***EOF***\n"
8
6
  SPLIT = %r{\n\*\*\*[^\*]+\*\*\*\n}m
9
7
 
@@ -11,12 +9,32 @@ def marker(x)
11
9
  "\n*** Output of #{x} ***\n"
12
10
  end
13
11
 
14
- TOTEST = [:inspect,:to_html,:to_latex,:to_s,:to_s]
12
+ def equals(a, b)
13
+ a = a.split("\n")
14
+ b = b.split("\n")
15
+
16
+ for i in 0..([a.size-1,b.size-1].max)
17
+ la = a[i]
18
+ lb = b[i]
19
+ if la != lb
20
+ puts "\n"
21
+ puts "Line #{i}:\n#{la.inspect}\n"
22
+ puts "#{lb.inspect}\n"
23
+ return false
24
+ end
25
+ end
26
+ return true
27
+ end
28
+
29
+ TOTEST = [:inspect,:to_html,:to_latex,:to_md,:to_s]
15
30
 
16
31
  def run_test(filename, its_ok, verbose=true)
17
32
  # read file content
18
33
  input = (f=File.open(filename,'r')).read; f.close
19
34
 
35
+ output_html = File.join(File.dirname(filename),
36
+ File.basename(filename, File.extname(filename)) + ".html")
37
+
20
38
  # split the input in sections
21
39
 
22
40
  stuff = input.split(SPLIT)
@@ -24,7 +42,7 @@ def run_test(filename, its_ok, verbose=true)
24
42
  comment = stuff.shift
25
43
  params_s = stuff.shift
26
44
 
27
- params = eval(params_s)
45
+ params = eval(params_s||'{}')
28
46
  if params == nil
29
47
  raise "Null params? #{params_s.inspect}"
30
48
  end
@@ -55,7 +73,10 @@ def run_test(filename, its_ok, verbose=true)
55
73
  puts actual[s]
56
74
  end
57
75
  end
58
-
76
+
77
+ File.open(output_html, 'w') do |f|
78
+ f.write actual[:to_html]
79
+ end
59
80
 
60
81
  begin
61
82
  m = Maruku.new
@@ -78,9 +99,11 @@ def run_test(filename, its_ok, verbose=true)
78
99
  end
79
100
  end
80
101
 
102
+ m = Maruku.new
103
+
104
+
81
105
  if not its_ok.include? :inspect
82
106
  begin
83
- m = Maruku.new
84
107
  d = m.instance_eval(expected[:inspect])
85
108
  # puts "Eval: #{d.inspect}"
86
109
  expected[:inspect] = d.inspect
@@ -91,15 +114,20 @@ def run_test(filename, its_ok, verbose=true)
91
114
  end
92
115
  end
93
116
 
94
-
117
+ # m.instance_eval(actual[:inspect]) != m.instance_eval(expected[:inspect])
118
+
119
+ # actual[:inspect] = m.instance_eval(actual[:inspect])
120
+ # expected[:inspect] = m.instance_eval(expected[:inspect])
121
+
122
+
95
123
  TOTEST.each do |x|
96
- if actual[x] != expected[x]
124
+ if not equals(actual[x], expected[x])
97
125
  if its_ok.include? x
98
126
  expected[x] = actual[x]
99
127
  $stdout.write " relax:#{x} "
100
128
  relaxed << x
101
129
  else
102
- actual[x] = "-----| WARNING | -----\n" + actual[x]
130
+ actual[x] = "-----| WARNING | -----\n" + actual[x].to_s
103
131
  failed << x
104
132
  end
105
133
  end
data/docs/TOFIX.html ADDED
@@ -0,0 +1,22 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
3
+ 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
4
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
5
+ <head><meta content='text/html; charset=utf-8' http-equiv='Content-type' />
6
+ <title></title>
7
+ </head>
8
+ <body>
9
+ <ul>
10
+ <li>id degli header</li>
11
+ </ul>
12
+
13
+ <div class='footnotes'>
14
+ <hr />
15
+
16
+ <ol />
17
+ </div>
18
+
19
+ <div class='maruku_signature'>
20
+ <hr />
21
+ <span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown interpreter'>Maruku</a> at 20:36 on Friday, January 05th, 2007.</span></div>
22
+ </body></html>
data/docs/TOFIX.md ADDED
@@ -0,0 +1,3 @@
1
+
2
+ - id degli header
3
+
@@ -0,0 +1,30 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
3
+ 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
4
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
5
+ <head><meta content='text/html; charset=utf-8' http-equiv='Content-type' />
6
+ <title></title>
7
+ </head>
8
+ <body>
9
+ <p>Maruku Version 0.2.13:</p>
10
+
11
+ <ul>
12
+ <li>better handling of inline HTML code.</li>
13
+
14
+ <li>Handle HTML comments.</li>
15
+
16
+ <li>Sanitizes HR and IMG tags if you don&apos;t close them.</li>
17
+
18
+ <li>documentation included in HTML format</li>
19
+ </ul>
20
+
21
+ <div class='footnotes'>
22
+ <hr />
23
+
24
+ <ol />
25
+ </div>
26
+
27
+ <div class='maruku_signature'>
28
+ <hr />
29
+ <span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown interpreter'>Maruku</a> at 20:36 on Friday, January 05th, 2007.</span></div>
30
+ </body></html>
@@ -0,0 +1,6 @@
1
+ Maruku Version 0.2.13:
2
+
3
+ - better handling of inline HTML code.
4
+ - Handle HTML comments.
5
+ - Sanitizes HR and IMG tags if you don't close them.
6
+ - documentation included in HTML format
@@ -2,13 +2,13 @@
2
2
  <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
3
3
  'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
4
4
  <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
5
- <head>
5
+ <head><meta content='text/html; charset=utf-8' http-equiv='Content-type' />
6
6
  <title></title>
7
7
 
8
8
  <link href='style.css' rel='stylesheet' type='text/css' />
9
9
  </head>
10
10
  <body>
11
- <h2 id='release_notes__version_030_january_3rd_2007'>Release notes - version 0.3.0 (January 3rd, 2007)</h2>
11
+ <h2 id='release_notes__version_030_january_3rd_2007'>Release notes - version 0.3.0 (January 3rd, 2007)<!--{:id=>"release_notes__version_030_january_3rd_2007"}--></h2>
12
12
 
13
13
  <p>Note: Maruku seems to be very robust, nevertheless it is still beta-level software. So if you want to use it in production environments, please check back in a month or so, while we squash the remaining bugs.</p>
14
14
 
@@ -63,13 +63,13 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
63
63
  <li>
64
64
  <p>UTF-8 input/output works OK for HTML, however I am having pain trying to export to LaTeX. I want at least Japanese characters support, so if you know how to do this you are very welcome to give me an hand.</p>
65
65
 
66
- <p>For example: in the HTML version, you should see accented characters in this parenthesis: </p>
66
+ <p>For example: in the HTML version, you should see accented characters in this parenthesis:</p>
67
67
 
68
68
  <blockquote>
69
69
  <p>(àèìòù)</p>
70
70
  </blockquote>
71
71
 
72
- <p>and Japanese text in these other parenthesis: </p>
72
+ <p>and Japanese text in these other parentheses:</p>
73
73
 
74
74
  <blockquote>
75
75
  <p>(カタカナで 私の 名前は アンドレア チェンシ です).</p>
@@ -91,9 +91,23 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
91
91
  <li>
92
92
  <p>Exporting to HTML splitting in multiple files.</p>
93
93
  </li>
94
+
95
+ <li>
96
+ <p>RubyPants.</p>
97
+ </li>
98
+
99
+ <li>
100
+ <p>Support for images in PDF.</p>
101
+ </li>
94
102
  </ul>
95
103
 
104
+ <div class='footnotes'>
105
+ <hr />
106
+
107
+ <ol />
108
+ </div>
109
+
96
110
  <div class='maruku_signature'>
97
111
  <hr />
98
- <span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown interpreter'>Maruku</a> at 00:06 on Wednesday, January 03rd, 2007.</span></div>
112
+ <span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown interpreter'>Maruku</a> at 20:36 on Friday, January 05th, 2007.</span></div>
99
113
  </body></html>
data/docs/faq.html CHANGED
@@ -1,46 +1,57 @@
1
1
  <?xml version='1.0' encoding='utf-8'?>
2
2
  <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
3
3
  'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
4
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
5
+ <head><meta content='text/html; charset=utf-8' http-equiv='Content-type' />
6
+ <title></title>
7
+ </head>
8
+ <body>
9
+ <h2 id='frequently_asked_questions'>Frequently asked questions<!--{:id=>"frequently_asked_questions"}--></h2>
4
10
 
5
- <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'
6
- ><head
7
- ><title></title
8
- ></head
9
- ><head
10
- ><title></title
11
- ></head
12
- ><body
13
- ><h2 id='frequently_asked_questions'>Frequently asked questions</h2
14
- ><ul
15
- ><li
16
- ><p
17
- ><em>Does Maruku supports internationalizations?</em
18
- ></p
19
- ><p>Maruku assumes that documents are written in UTF-8.</p
20
- ><p>The following are some examples of UTF-8 special chars:</p
21
- ><blockquote
22
- ><p>Maruku in katakana: マルク<br /
23
- >Māku: マーク<br /
24
- >Accented italian letters: àèéìòù<br /
25
- >Andrea Censi: アンドレア チェンシ</p
26
- ></blockquote
27
- ><p>The internal format is again UTF-8.</p
28
- ><p>The HTML output is encoded in UTF-8, and the <code>encoding</code
29
- > is set in the xml header:</p
30
- ><pre
31
- ><code>&lt;?xml version=&apos;1.0&apos; encoding=&apos;utf-8&apos;?&gt;
11
+ <ul>
12
+ <li>
13
+ <p><em>Does Maruku supports internationalizations?</em></p>
14
+
15
+ <p>Maruku workflow:</p>
16
+
17
+ <ul>
18
+ <li>input is assumed to be in UTF-8, unless an encoding is specified.</li>
19
+
20
+ <li>the internal representation is UTF-8.</li>
21
+
22
+ <li>the HTML output is in UTF-8.</li>
23
+
24
+ <li>the LaTeX output does not work yet for arbitrary UTF-8 characters (please help me if you can).</li>
25
+ </ul>
26
+
27
+ <p>The following are some examples of UTF-8 special chars:</p>
28
+
29
+ <blockquote>
30
+ <p>Maruku in katakana: マルク<br />
31
+ Māku: マーク<br />
32
+ Accented italian letters: àèéìòù<br />
33
+ Andrea Censi: アンドレア チェンシ</p>
34
+ </blockquote>
35
+
36
+ <p>The internal format is again UTF-8.</p>
37
+
38
+ <p>The HTML output is encoded in UTF-8, and the <code>encoding</code> is set in the xml header:</p>
39
+
40
+ <pre><code>&lt;?xml version=&apos;1.0&apos; encoding=&apos;utf-8&apos;?&gt;
32
41
  &lt;!DOCTYPE html PUBLIC &apos;-//W3C//DTD XHTML 1.0 Strict//EN&apos;
42
+ </code></pre>
43
+
44
+ <p>However, the LaTeX output does not work yet for arbitrary UTF-8 strings. I need help for this.</p>
45
+ </li>
46
+ </ul>
47
+
48
+ <div class='footnotes'>
49
+ <hr />
50
+
51
+ <ol />
52
+ </div>
33
53
 
34
- However, the LaTeX output does not work yet for arbitrary</code
35
- ></pre
36
- ><p> UTF-8 strings. I need help for this.</p
37
- ></li
38
- ></ul
39
- ><div class='maruku_signature'
40
- ><hr /
41
- ><span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown interpreter'>Maruku</a
42
- > at 18:10 on Tuesday, January 02nd, 2007.</span
43
- ></div
44
- ></body
45
- ></html
46
- >
54
+ <div class='maruku_signature'>
55
+ <hr />
56
+ <span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown interpreter'>Maruku</a> at 20:36 on Friday, January 05th, 2007.</span></div>
57
+ </body></html>
data/docs/faq.md CHANGED
@@ -2,7 +2,7 @@ Frequently asked questions
2
2
  --------------------------
3
3
 
4
4
 
5
- * *Does Maruku supports internationalizations?*
5
+ * *Does Maruku supports internationalizations?*
6
6
 
7
7
  Maruku workflow:
8
8
 
@@ -25,8 +25,8 @@ Frequently asked questions
25
25
  The HTML output is encoded in UTF-8, and
26
26
  the `encoding` is set in the xml header:
27
27
 
28
- <?xml version='1.0' encoding='utf-8'?>
29
- <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
28
+ <?xml version='1.0' encoding='utf-8'?>
29
+ <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
30
30
 
31
31
  However, the LaTeX output does not work yet for arbitrary
32
32
  UTF-8 strings. I need help for this.
@@ -0,0 +1,10 @@
1
+ Title: hidden o^n squared algorithms
2
+
3
+ Premessa: I am not particularly expert in text processing, regular
4
+ expressions, etc.
5
+
6
+
7
+ Another example of a O(n^2) algorithm is the following:
8
+
9
+
10
+
data/docs/index.html CHANGED
@@ -1,13 +1,7 @@
1
1
  <?xml version='1.0' encoding='utf-8'?>
2
2
  <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
3
3
  'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
4
- <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
5
- <head>
6
- <title>Maruku: a Markdown-superset interpreter</title>
7
-
8
- <link href='style.css' rel='stylesheet' type='text/css' />
9
- </head>
10
- <body>
4
+ <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'><head><meta content='text/html; charset=utf-8' http-equiv='Content-type' /><title>Maruku: a Markdown-superset interpreter</title><link href='style.css' rel='stylesheet' type='text/css' /></head><body>
11
5
  <h1 id='maruku_a_markdownsuperset_interpreter'>Mar<strong>u</strong>k<strong>u</strong>: a Markdown-superset interpreter</h1>
12
6
 
13
7
  <p><a href='http://maruku.rubyforge.org/&gt;'>Maruku</a> is a Markdown interpreter written in <a href='http://www.ruby-lang.org'>Ruby</a>.</p>
@@ -15,7 +9,7 @@
15
9
  <p>Maruku allows you to write in an easy-to-read-and-write syntax, like this:</p>
16
10
 
17
11
  <blockquote>
18
- <p><a href='http://maruku.rubyforge.org/maruku.md'>This document in Markdown</a> </p>
12
+ <p><a href='http://maruku.rubyforge.org/maruku.md'>This document in Markdown</a></p>
19
13
  </blockquote>
20
14
 
21
15
  <p>Then it can be translated to HTML:</p>
@@ -38,85 +32,43 @@
38
32
  </li>
39
33
 
40
34
  <li>
41
- <p>all the improvements in <a href='http://www.michelf.com/projects/php-markdown/extra/'>PHP Markdown Extra</a>. </p>
35
+ <p>all the improvements in <a href='http://www.michelf.com/projects/php-markdown/extra/'>PHP Markdown Extra</a>.</p>
42
36
  </li>
43
37
 
44
38
  <li>
45
- <p>a new <a href='#meta'>meta-data syntax</a></p>
39
+ <p>a new <a href='http://maruku.rubyforge.org/proposal.html'>meta-data syntax</a></p>
46
40
  </li>
47
41
  </ul>
48
42
 
49
43
  <p><strong>Authors</strong>: Maruku has been developed so far by <a href='http://www.dis.uniroma1.it/~acensi/'>Andrea Censi</a>. Contributors are most welcome!</p>
50
44
 
51
45
  <p><strong>The name of the game</strong>: Maruku is the <a href='http://en.wikipedia.org/wiki/Romaji'>romaji</a> translitteration of the <a href='http://en.wikipedia.org/wiki/Katakana'>katakana</a> translitteration of &quot;Mark&quot;, the first word in Markdown. I chose this name because Ruby is Japanese, and also the sillable &quot;ru&quot; appears in Maruku.</p>
52
-
53
46
  <hr />
54
-
55
47
  <p>Table of contents: (<strong>auto-generated by Maruku!</strong>)</p>
48
+ <div class='maruku_toc'><ul style='list-style: none;'><li><span class='maruku_section_number'>1. </span><a href='#release_notes'>Release notes</a></li><li><span class='maruku_section_number'>2. </span><a href='#download'>Download</a><ul style='list-style: none;'><li><span class='maruku_section_number'>2.1. </span><a href='#bugs_report'>Bugs report</a></li></ul></li><li><span class='maruku_section_number'>3. </span><a href='#usage'>Usage</a><ul style='list-style: none;'><li><span class='maruku_section_number'>3.1. </span><a href='#from_the_command_line'>From the command line</a></li></ul></li><li><span class='maruku_section_number'>4. </span><a href='#extra'>Examples of PHP Markdown Extra syntax</a></li><li><span class='maruku_section_number'>5. </span><a href='#maruku-and-bluecloth'>Maruku and Bluecloth</a></li><li><span class='maruku_section_number'>6. </span><a href='#meta'>New meta-data syntax</a><ul style='list-style: none;'><li><span class='maruku_section_number'>6.1. </span><a href='#metadata_for_blocklevel_and_spanlevel_elements'>Meta-data for block-level and span-level elements</a></li><li><span class='maruku_section_number'>6.2. </span><a href='#metadata_for_the_document'>Meta-data for the document</a></li><li><span class='maruku_section_number'>6.3. </span><a href='#metalist'>List of meta-data</a></li><li><span class='maruku_section_number'>6.4. </span><a href='#examples'>Examples</a></li></ul></li><li><span class='maruku_section_number'>7. </span><a href='#features'>Other Features</a><ul style='list-style: none;'><li><span class='maruku_section_number'>7.1. </span><a href='#automatic_generation_of_the_table_of_contents'>Automatic generation of the table of contents</a></li><li><span class='maruku_section_number'>7.2. </span><a href='#this_header_contains_emphasis_strong_text_and_'>This header contains <em>emphasis</em> <strong>strong text</strong> and <code>code</code></a></li><li><span class='maruku_section_number'>7.3. </span><a href='#use_html_entities'>Use HTML entities</a></li></ul></li><li><span class='maruku_section_number'>8. </span><a href='#future'>Future developments</a><ul style='list-style: none;'><li><span class='maruku_section_number'>8.1. </span><a href='#a_syntax_for_adding_math'>A syntax for adding math</a></li></ul></li></ul></div><hr />
49
+ <h2 id='release_notes'><span class='maruku_section_number'>1. </span>Release notes</h2>
56
50
 
57
- <div class='maruku_toc'>
58
- <ul style='list-style: none;'>
59
- <li><span class='maruku_section_number'>1. </span><a href='#release_notes'>Release notes - version 0.3.0 (January 3rd, 2007)</a></li>
60
-
61
- <li><span class='maruku_section_number'>2. </span><a href='#download'>Download</a>
62
- <ul style='list-style: none;'>
63
- <li><span class='maruku_section_number'>2.1. </span><a href='#bugs_report'>Bugs report</a></li>
64
- </ul>
65
- </li>
66
-
67
- <li><span class='maruku_section_number'>3. </span><a href='#usage'>Usage</a>
68
- <ul style='list-style: none;'>
69
- <li><span class='maruku_section_number'>3.1. </span><a href='#from_the_command_line'>From the command line</a></li>
70
- </ul>
71
- </li>
72
-
73
- <li><span class='maruku_section_number'>4. </span><a href='#extra'>Examples of PHP Markdown Extra syntax</a></li>
74
-
75
- <li><span class='maruku_section_number'>5. </span><a href='#maruku-and-bluecloth'>Maruku and Bluecloth</a></li>
76
-
77
- <li><span class='maruku_section_number'>6. </span><a href='#meta'>New meta-data syntax</a>
78
- <ul style='list-style: none;'>
79
- <li><span class='maruku_section_number'>6.1. </span><a href='#metadata_for_the_document'>Meta-data for the document</a></li>
51
+ <p>Note: Maruku seems to be very robust, nevertheless it is still beta-level software. So if you want to use it in production environments, please check back in a month or so, while we squash the remaining bugs.</p>
80
52
 
81
- <li><span class='maruku_section_number'>6.2. </span><a href='#metadata_for_elements'>Meta-data for elements</a></li>
53
+ <p>In the meantime, feel free to toy around, and please signal problems, request features, by <a href='http://www.dis.uniroma1.it/~acensi/contact.html'>contacting me</a> or using the <a href='http://rubyforge.org/tracker/?group_id=2795'>tracker</a>. For issues about the Markdown syntax itself and improvements to it, please write to the <a href='http://six.pairlist.net/mailman/listinfo/markdown-discuss'>Markdown-discuss mailing list</a>.</p>
82
54
 
83
- <li><span class='maruku_section_number'>6.3. </span><a href='#shortcuts'>Shortcuts</a></li>
55
+ <p>Have fun!</p>
84
56
 
85
- <li><span class='maruku_section_number'>6.4. </span><a href='#metalist'>List of meta-data</a></li>
57
+ <h4 id='changes_in_04'>Changes in 0.4</h4>
86
58
 
87
- <li><span class='maruku_section_number'>6.5. </span><a href='#examples'>Examples</a></li>
88
- </ul>
89
- </li>
59
+ <ul>
60
+ <li>First implementation of <a href='http://maruku.rubyforge.org/proposal.html'>the new meta-data syntax</a>.</li>
90
61
 
91
- <li><span class='maruku_section_number'>7. </span><a href='#features'>Other Features</a>
92
- <ul style='list-style: none;'>
93
- <li><span class='maruku_section_number'>7.1. </span><a href='#automatic_generation_of_the_table_of_contents'>Automatic generation of the table of contents</a></li>
62
+ <li>General refactorization of the code and much cleaner error reporting.</li>
94
63
 
95
- <li><span class='maruku_section_number'>7.2. </span><a href='#this_header_contains_emphasis_strong_text_and_'>This header contains <em>emphasis</em> <strong>strong text</strong> and <code>code</code></a></li>
64
+ <li>Created <a href='http://maruku.rubyforge.org/rdoc/'>the RDOC documentation</a>.</li>
96
65
 
97
- <li><span class='maruku_section_number'>7.3. </span><a href='#use_html_entities'>Use HTML entities</a></li>
98
- </ul>
99
- </li>
66
+ <li>The <code>add_whitespace</code> method took too much time -- it was O(n^2).</li>
100
67
 
101
- <li><span class='maruku_section_number'>8. </span><a href='#future'>Future developments</a>
102
- <ul style='list-style: none;'>
103
- <li><span class='maruku_section_number'>8.1. </span><a href='#a_syntax_for_adding_math'>A syntax for adding math</a></li>
104
- </ul>
105
- </li>
68
+ <li>Added unit-tests for block-level elements.</li>
106
69
  </ul>
107
- </div>
108
-
109
- <hr />
110
70
 
111
- <h2 id='release_notes'><span class='maruku_section_number'>1. </span>Release notes - version 0.3.0 (January 3rd, 2007)</h2>
112
-
113
- <p>Note: Maruku seems to be very robust, nevertheless it is still beta-level software. So if you want to use it in production environments, please check back in a month or so, while we squash the remaining bugs.</p>
114
-
115
- <p>In the meantime, feel free to toy around, and please signal problems, request features, by <a href='http://www.dis.uniroma1.it/~acensi/contact.html'>contacting me</a> or using the <a href='http://rubyforge.org/tracker/?group_id=2795'>tracker</a>. For issues about the Markdown syntax itself and improvements to it, please write to the <a href='http://six.pairlist.net/mailman/listinfo/markdown-discuss'>Markdown-discuss mailing list</a>.</p>
116
-
117
- <p>Have fun!</p>
118
-
119
- <p>Changes in 0.3.0:</p>
71
+ <h4 id='changes_in_03'>Changes in 0.3</h4>
120
72
 
121
73
  <ul>
122
74
  <li>
@@ -125,11 +77,9 @@
125
77
  <p>Now Maruku is almost 2x faster than Bluecloth, while having more features.</p>
126
78
 
127
79
  <p>Here are some benchmarks:</p>
128
-
129
80
  <pre><code>BlueCloth (to_html): parsing 0.00 sec + rendering 1.54 sec = 1.55 sec
130
81
  Maruku (to_html): parsing 0.47 sec + rendering 0.38 sec = 0.85 sec
131
82
  Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pre>
132
-
133
83
  <p>This is the result of running <code>lib/maruku/tests/benchmark.rb</code> on the Markdown specification.</p>
134
84
  </li>
135
85
 
@@ -145,10 +95,8 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
145
95
  <p>Error management: Having a real parser, Maruku warns you about syntax issues.</p>
146
96
 
147
97
  <p>The default action is to warn and try to continue. If you do this:</p>
148
-
149
98
  <pre><code>Maruku.new(string, {:on_error =&gt; :raise})
150
99
  </code></pre>
151
-
152
100
  <p>then syntax errors will cause an exception to be raised (you can catch this and retry).</p>
153
101
  </li>
154
102
 
@@ -163,13 +111,13 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
163
111
  <li>
164
112
  <p>UTF-8 input/output works OK for HTML, however I am having pain trying to export to LaTeX. I want at least Japanese characters support, so if you know how to do this you are very welcome to give me an hand.</p>
165
113
 
166
- <p>For example: in the HTML version, you should see accented characters in this parenthesis: </p>
114
+ <p>For example: in the HTML version, you should see accented characters in this parenthesis:</p>
167
115
 
168
116
  <blockquote>
169
117
  <p>(àèìòù)</p>
170
118
  </blockquote>
171
119
 
172
- <p>and Japanese text in these other parentheses: </p>
120
+ <p>and Japanese text in these other parentheses:</p>
173
121
 
174
122
  <blockquote>
175
123
  <p>(カタカナで 私の 名前は アンドレア チェンシ です).</p>
@@ -206,17 +154,11 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
206
154
  <p>The development site is <a href='http://rubyforge.org/projects/maruku/'>http://rubyforge.org/projects/maruku/</a>.</p>
207
155
 
208
156
  <p>Install with:</p>
209
-
210
- <pre><code>$ gem install maruku
211
- </code></pre>
212
-
157
+ <pre class='shell' style='background-color: #efefff;'>$ gem install maruku</pre>
213
158
  <p>Released files can also be seen at <a href='http://rubyforge.org/frs/?group_id=2795'>http://rubyforge.org/frs/?group_id=2795</a>.</p>
214
159
 
215
160
  <p>Anonymous access to the repository is possible with:</p>
216
-
217
- <pre><code>$ svn checkout svn://rubyforge.org/var/svn/maruku
218
- </code></pre>
219
-
161
+ <pre class='shell' style='background-color: #efefff;'>$ svn checkout svn://rubyforge.org/var/svn/maruku</pre>
220
162
  <p>If you want commit access to the repository, just create an account on Rubyforge and <a href='http://www.dis.uniroma1.it/~acensi/contact.html'>drop me a mail</a>.</p>
221
163
 
222
164
  <h3 id='bugs_report'><span class='maruku_section_number'>2.1. </span>Bugs report</h3>
@@ -226,21 +168,15 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
226
168
  <h2 id='usage'><span class='maruku_section_number'>3. </span>Usage</h2>
227
169
 
228
170
  <p>This is the basic usage:</p>
229
-
230
- <pre class='ruby'><span class='ident'>require</span> <span class='punct'>'</span><span class='string'>rubygems</span><span class='punct'>'</span>
171
+ <pre class='ruby' style='background-color: #efffef;'><span class='ident'>require</span> <span class='punct'>'</span><span class='string'>rubygems</span><span class='punct'>'</span>
231
172
  <span class='ident'>require</span> <span class='punct'>'</span><span class='string'>maruku</span><span class='punct'>'</span>
232
173
 
233
174
  <span class='ident'>doc</span> <span class='punct'>=</span> <span class='constant'>Maruku</span><span class='punct'>.</span><span class='ident'>new</span><span class='punct'>(</span><span class='ident'>markdown_string</span><span class='punct'>)</span>
234
175
  <span class='ident'>puts</span> <span class='ident'>doc</span><span class='punct'>.</span><span class='ident'>to_html</span></pre>
235
-
236
176
  <p>The method <code>to_html</code> outputs only an HTML fragment, while the method <code>to_html_document</code> outputs a complete XHTML 1.0 document:</p>
237
-
238
- <pre class='ruby'><span class='ident'>puts</span> <span class='ident'>doc</span><span class='punct'>.</span><span class='ident'>to_html_document</span></pre>
239
-
177
+ <pre class='ruby' style='background-color: #efffef;'><span class='ident'>puts</span> <span class='ident'>doc</span><span class='punct'>.</span><span class='ident'>to_html_document</span></pre>
240
178
  <p>You can have the REXML document tree with:</p>
241
-
242
- <pre class='ruby'><span class='ident'>tree</span> <span class='punct'>=</span> <span class='ident'>doc</span><span class='punct'>.</span><span class='ident'>to_html_document_tree</span></pre>
243
-
179
+ <pre class='ruby' style='background-color: #efffef;'><span class='ident'>tree</span> <span class='punct'>=</span> <span class='ident'>doc</span><span class='punct'>.</span><span class='ident'>to_html_document_tree</span></pre>
244
180
  <h3 id='from_the_command_line'><span class='maruku_section_number'>3.1. </span>From the command line</h3>
245
181
 
246
182
  <p>There are two command-line programs installed: <code>maruku</code> and <code>marutex</code>.</p>
@@ -248,15 +184,11 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
248
184
  <ul>
249
185
  <li>
250
186
  <p><code>maruku</code> converts Markdown to HTML:</p>
251
-
252
- <pre><code>$ maruku file.md # creates file.html</code></pre>
253
- </li>
187
+ <pre class='shell' style='background-color: #efefff;'>$ maruku file.md # creates file.html</pre></li>
254
188
 
255
189
  <li>
256
- <p><code>marutex</code> converts Markdown to LaTeX, then calls <code>pdflatex</code> to transform to PDF</p>
257
-
258
- <pre><code>$ marutex file.md # creates file.tex and file.pdf</code></pre>
259
- </li>
190
+ <p><code>marutex</code> converts Markdown to LaTeX, then calls <code>pdflatex</code> to transform to PDF:</p>
191
+ <pre class='shell' style='background-color: #efefff;'>$ marutex file.md # creates file.tex and file.pdf</pre></li>
260
192
  </ul>
261
193
 
262
194
  <h2 id='extra'><span class='maruku_section_number'>4. </span>Examples of PHP Markdown Extra syntax</h2>
@@ -264,76 +196,36 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
264
196
  <ul>
265
197
  <li>
266
198
  <p>tables</p>
267
-
268
- <pre><code>Col1 | Very very long head | Very very long head|
199
+ <pre class='markdown' style='background-color: #ffefef;'>Col1 | Very very long head | Very very long head|
269
200
  -----|:-------------------:|-------------------:|
270
- cell | center-align | right-align |
271
- </code></pre>
272
-
273
- <table class='example'>
274
- <thead>
275
- <tr><th>Col1</th><th>Very very long head</th><th>Very very long head</th></tr>
276
- </thead>
277
- <tbody>
278
- <tr>
279
- <td style='text-align: left;'>cell</td>
280
-
281
- <td style='text-align: center;'>center-align</td>
282
-
283
- <td style='text-align: right;'>right-align</td>
284
- </tr>
285
- </tbody></table>
286
- </li>
201
+ cell | center-align | right-align |</pre><table><thead><tr><th>Col1</th><th>Very very long head</th><th>Very very long head</th></tr></thead><tbody><tr><td style='text-align: left;'>cell</td><td style='text-align: center;'>center-align</td><td style='text-align: right;'>right-align</td></tr></tbody></table></li>
287
202
 
288
203
  <li>
289
204
  <p>footnotes <sup id='fnref:1'><a href='#fn:1' rel='footnote'>1</a></sup></p>
205
+ <pre class='markdown' style='background-color: #ffefef;'>* footnotes [^foot]
290
206
 
291
- <pre><code>* footnotes [^foot]
292
-
293
- [^foot]: I really was missing those.</code></pre>
294
- </li>
295
-
296
- <li>
297
- <p>Markdown inside HTML elememnts</p>
298
- </li>
207
+ [^foot]: I really was missing those.</pre></li>
299
208
  </ul>
300
209
 
301
- <pre class='xml'><span class='punct'>&lt;</span><span class='tag'>div</span> <span class='attribute'>markdown</span><span class='punct'>=&quot;</span><span class='string'>1</span><span class='punct'>&quot;</span> <span class='attribute'>style</span><span class='punct'>=&quot;</span><span class='string'>border: solid 1px black</span><span class='punct'>&quot;&gt;</span>
210
+ <ul>
211
+ <li>
212
+ <p>Markdown inside HTML elements</p>
213
+ <pre><code>&lt;div markdown=&quot;1&quot; style=&quot;border: solid 1px black&quot;&gt;
302
214
  This is a div with Markdown **strong text**
303
- <span class='punct'>&lt;/</span><span class='tag'>div</span><span class='punct'>&gt;</span></pre>
304
-
305
- <div style='border: solid 1px black'>
215
+ &lt;/div&gt;</code></pre><div style='border: solid 1px black'>
306
216
  <p>This is a div with Markdown <strong>strong text</strong></p>
307
- </div>
217
+ </div></li>
308
218
 
309
- <ul>
310
219
  <li>
311
220
  <p>header ids</p>
312
-
313
- <pre><code>## Download ## {#download}
314
- </code></pre>
315
-
221
+ <pre class='markdown' style='background-color: #ffefef;'>## Download ## {#download}</pre>
316
222
  <p>For example, <a href='#download'>a link to the download</a> header.</p>
317
-
318
- <p>Note that you can use also the new <a href='#meta'>meta-data syntax</a> for the same purpose:</p>
319
-
320
- <pre><code>@ id: download
321
- ## Header ## </code></pre>
322
223
  </li>
323
224
 
324
225
  <li>
325
226
  <p>definition lists</p>
326
-
327
- <pre><code>Definition list
328
- : something very hard to parse
329
- </code></pre>
330
-
331
- <dl>
332
- <dt>Definition list</dt>
333
-
334
- <dd>something very hard to parse</dd>
335
- </dl>
336
- </li>
227
+ <pre class='markdown' style='background-color: #ffefef;'>Definition list
228
+ : something very hard to parse</pre><dl><dt>Definition list</dt><dd>something very hard to parse</dd></dl></li>
337
229
 
338
230
  <li>
339
231
  <p>abbreviations or <abbr title='Simply an abbreviation'>ABB</abbr> for short.</p>
@@ -342,7 +234,7 @@ cell | center-align | right-align |
342
234
 
343
235
  <h2 id='maruku-and-bluecloth'><span class='maruku_section_number'>5. </span>Maruku and Bluecloth</h2>
344
236
 
345
- <p>The other Ruby implementation of Markdown is <a href='http://www.deveiate.org/projects/BlueCloth'>Bluecloth</a>. </p>
237
+ <p>The other Ruby implementation of Markdown is <a href='http://www.deveiate.org/projects/BlueCloth'>Bluecloth</a>.</p>
346
238
 
347
239
  <p>Maruku is much different in philosophy from Bluecloth: the biggest difference is that <em>parsing</em> is separated from <em>rendering</em>. In Maruku, an in-memory representation of the Markdown document is created. Instead, Bluecloth mantains the document in memory as a String at all times, and does a series of <code>gsub</code> to transform to HTML.</p>
348
240
 
@@ -364,175 +256,50 @@ cell | center-align | right-align |
364
256
 
365
257
  <p>Maruku implements a syntax that allows to attach &quot;meta&quot; information to objects.</p>
366
258
 
367
- <h3 id='metadata_for_the_document'><span class='maruku_section_number'>6.1. </span>Meta-data for the document</h3>
368
-
369
- <p>Meta-data for the document itself is specified through the use of email headers:</p>
370
-
371
- <pre><code>Title: A simple document containing meta-headers
372
- CSS: style.css
259
+ <h3 id='metadata_for_blocklevel_and_spanlevel_elements'><span class='maruku_section_number'>6.1. </span>Meta-data for block-level and span-level elements</h3>
373
260
 
374
- Content of the document
375
- </code></pre>
261
+ <p>See <a href='http://maruku.rubyforge.org/proposal.html'>this proposal</a>.</p>
376
262
 
377
- <p>When creating the document through </p>
263
+ <h3 id='metadata_for_the_document'><span class='maruku_section_number'>6.2. </span>Meta-data for the document</h3>
378
264
 
379
- <pre class='ruby'><span class='constant'>Maruku</span><span class='punct'>.</span><span class='ident'>new</span><span class='punct'>(</span><span class='ident'>s</span><span class='punct'>).</span><span class='ident'>to_html_document</span></pre>
265
+ <p>Meta-data for the document itself is specified through the use of email headers:</p>
266
+ <pre class='markdown' style='background-color: #ffefef;'>Title: A simple document containing meta-headers
267
+ CSS: style.css
380
268
 
269
+ Content of the document</pre>
270
+ <p>When creating the document through</p>
271
+ <pre class='ruby' style='background-color: #efffef;'><span class='constant'>Maruku</span><span class='punct'>.</span><span class='ident'>new</span><span class='punct'>(</span><span class='ident'>s</span><span class='punct'>).</span><span class='ident'>to_html_document</span></pre>
381
272
  <p>the title and stylesheet are added as expected.</p>
382
273
 
383
274
  <p>Meta-data keys are assumed to be case-insensitive.</p>
384
-
385
- <h3 id='metadata_for_elements'><span class='maruku_section_number'>6.2. </span>Meta-data for elements</h3>
386
-
387
- <p>Maruku introduces a new syntax for attaching metadata to paragraphs, tables, and so on.</p>
388
-
389
- <p>For example, consider the creation of two paragraphs:</p>
390
-
391
- <pre><code>Paragraph 1 is a warning.
392
-
393
- Paragraph 2
394
- </code></pre>
395
-
396
- <p>Now you really want to attach a &apos;class&apos; attribute to the paragraphs (for example for CSS styling). Maruku allows you to use:</p>
397
-
398
- <pre><code>@ class: warning
399
- Paragraph 1 is a warning
400
-
401
- Paragraph 2
402
-
403
- </code></pre>
404
-
405
- <p>You can add more by separating with a <code>;</code>:</p>
406
-
407
- <pre><code>@ class: warning; id: warning1
408
- Paragraph 1 is a warning
409
- </code></pre>
410
-
411
- <p>A meta-data declaration is composed of </p>
412
-
413
- <ol>
414
- <li>newline</li>
415
-
416
- <li>an at-symbol <code>@</code></li>
417
-
418
- <li>a series of name-value pairs. Each name-value is separated by a colon <code>:</code>, pairs are separated by semi-colons <code>;</code> </li>
419
- </ol>
420
-
421
- <p>Many declaration can be used, and they refer to <em>the following</em> object:</p>
422
-
423
- <pre><code>@ class: warning
424
- @ id: warning1
425
- Paragraph 1 is a warning
426
- </code></pre>
427
-
428
- <p>These can also be separated by newlines:</p>
429
-
430
- <pre><code>@ class: warning
431
-
432
- @ id: warning1
433
-
434
- Paragraph 1 is a warning
435
-
436
- </code></pre>
437
-
438
- <h3 id='shortcuts'><span class='maruku_section_number'>6.3. </span>Shortcuts</h3>
439
-
440
- <p>This:</p>
441
-
442
- <pre><code>@ .xyz
443
- Paragraph
444
- </code></pre>
445
-
446
- <p>is equivalent to:</p>
447
-
448
- <pre><code>@ class: xyz
449
- Paragraph
450
- </code></pre>
451
-
452
- <p>This:</p>
453
-
454
- <pre><code>@ #xyz
455
- Paragraph
456
- </code></pre>
457
-
458
- <p>is equivalent to:</p>
459
-
460
- <pre><code>@ id: xyz
461
- Paragraph
462
- </code></pre>
463
-
464
- <p>Also, if the value is not present, it defaults to <code>true</code>:</p>
465
-
466
- <pre><code>@ test
467
-
468
- This paragraph has the attribute `test` set to `true`.
469
- </code></pre>
470
-
471
275
  <hr />
472
-
473
- <h3 id='metalist'><span class='maruku_section_number'>6.4. </span>List of meta-data</h3>
474
-
475
- <dl>
476
- <dt><strong><code>title</code>, <code>subject</code></strong></dt>
477
-
478
- <dd>
276
+ <h3 id='metalist'><span class='maruku_section_number'>6.3. </span>List of meta-data</h3>
277
+ <dl><dt><strong><code>title</code>, <code>subject</code></strong></dt><dd>
479
278
  <p>(document) Sets the title of the document (HTML: used in the <code>TITLE</code> element).</p>
480
- </dd>
481
-
482
- <dt><strong><code>use_numbered_headers</code></strong></dt>
483
-
484
- <dd>
279
+ </dd><dt><strong><code>use_numbered_headers</code></strong></dt><dd>
485
280
  <p>(document) If <code>true</code>, headers are numbered (just like this document). Default is <code>false</code>.</p>
486
- </dd>
487
-
488
- <dt><strong><code>css</code></strong></dt>
489
-
490
- <dd>
281
+ </dd><dt><strong><code>css</code></strong></dt><dd>
491
282
  <p>(document, HTML) Url of stylesheet.</p>
492
- </dd>
493
-
494
- <dt><strong><code>html_use_syntax</code></strong></dt>
495
-
496
- <dd>
283
+ </dd><dt><strong><code>html_use_syntax</code></strong></dt><dd>
497
284
  <p>(document, HTML) If set, use the <a href='http://syntax.rubyforge.org/'>Ruby <code>syntax</code> library</a> to add source highlighting.</p>
498
- </dd>
499
-
500
- <dt><strong><code>latex_use_listings</code></strong></dt>
501
-
502
- <dd>
285
+ </dd><dt><strong><code>latex_use_listings</code></strong></dt><dd>
503
286
  <p>(document, LaTeX) If set, use the fancy <a href='http://www.ctan.org/tex-archive/macros/latex/contrib/listings/'><code>listings</code> package</a> for better displaying code blocks.</p>
504
287
 
505
- <p> If not set, use standard <code>verbatim</code> environment.</p>
506
- </dd>
507
-
508
- <dt><strong><code>style</code>, <code>id</code>, <code>class</code></strong></dt>
509
-
510
- <dd>
288
+ <p>If not set, use standard <code>verbatim</code> environment.</p>
289
+ </dd><dt><strong><code>style</code>, <code>id</code>, <code>class</code></strong></dt><dd>
511
290
  <p>(any block object, HTML) Standard CSS attributes are copied.</p>
512
- </dd>
513
-
514
- <dt><strong><code>lang</code></strong></dt>
515
-
516
- <dd>
291
+ </dd><dt><strong><code>lang</code></strong></dt><dd>
517
292
  <p>(code blocks) Name of programming language (<code>ruby</code>) for syntax highlighting.</p>
518
293
 
519
- <p> Default for this is <code>code_lang</code> in document.</p>
520
-
521
- <p> Syntax highlighting is delegated to the <a href='http://syntax.rubyforge.org/'><code>syntax</code> library</a> for HTML output and to the <a href='http://www.ctan.org/tex-archive/macros/latex/contrib/listings/'><code>listings</code> package</a> for LaTeX output.</p>
522
- </dd>
523
-
524
- <dt><strong><code>code_show_spaces</code></strong></dt>
294
+ <p>Default for this is <code>code_lang</code> in document.</p>
525
295
 
526
- <dd>
296
+ <p>Syntax highlighting is delegated to the <a href='http://syntax.rubyforge.org/'><code>syntax</code> library</a> for HTML output and to the <a href='http://www.ctan.org/tex-archive/macros/latex/contrib/listings/'><code>listings</code> package</a> for LaTeX output.</p>
297
+ </dd><dt><strong><code>code_show_spaces</code></strong></dt><dd>
527
298
  <p>Shows tabs and newlines (default is read in the document object).</p>
528
- </dd>
529
-
530
- <dt><strong><code>code_background_color</code></strong></dt>
531
-
532
- <dd>
299
+ </dd><dt><strong><code>code_background_color</code></strong></dt><dd>
533
300
  <p>Background color for code blocks. (default is read in the document object).</p>
534
301
 
535
- <p>The format is either a named color (<code>green</code>, <code>red</code>) or a CSS color of the form <code>#ff00ff</code>. </p>
302
+ <p>The format is either a named color (<code>green</code>, <code>red</code>) or a CSS color of the form <code>#ff00ff</code>.</p>
536
303
 
537
304
  <ul>
538
305
  <li>
@@ -540,68 +307,39 @@ This paragraph has the attribute `test` set to `true`.
540
307
  </li>
541
308
 
542
309
  <li>
543
- <p>for <strong>LaTeX output</strong>, if it is a named color, it must be a color accepted by the LaTeX <code>color</code> packages. If it is of the form <code>#ff00ff</code>, Maruku defines a color using the <code>\color[rgb]{r,g,b}</code> macro. </p>
310
+ <p>for <strong>LaTeX output</strong>, if it is a named color, it must be a color accepted by the LaTeX <code>color</code> packages. If it is of the form <code>#ff00ff</code>, Maruku defines a color using the <code>\color[rgb]{r,g,b}</code> macro.</p>
544
311
 
545
312
  <p>For example, for <code>#0000ff</code>, the macro is called as: <code>\color[rgb]{0,0,1}</code>.</p>
546
313
  </li>
547
314
  </ul>
548
- </dd>
549
- </dl>
550
-
551
- <h3 id='examples'><span class='maruku_section_number'>6.5. </span>Examples</h3>
315
+ </dd></dl>
316
+ <h3 id='examples'><span class='maruku_section_number'>6.4. </span>Examples</h3>
552
317
 
553
318
  <p>An example of this is the following:</p>
554
-
555
- <pre><code>@&not;code_show_spaces;&not;code_background_color:&not;green
556
-
557
- &raquo;&nbsp;&nbsp;&nbsp;&not;One&not;space
558
- &raquo;&nbsp;&nbsp;&nbsp;&not;&not;Two&not;spaces
559
- &raquo;&nbsp;&nbsp;&nbsp;&raquo;&nbsp;&nbsp;&nbsp;&not;&raquo;&nbsp;&nbsp;&nbsp;Tab,&not;space,&not;tab
560
- &raquo;&nbsp;&nbsp;&nbsp;&raquo;&nbsp;&nbsp;&nbsp;&raquo;&nbsp;&nbsp;&nbsp;&raquo;&nbsp;&nbsp;&nbsp;Tab,&not;tab,&not;tab&not;and&not;all&not;is&not;green!
561
- </code></pre>
562
-
319
+ <pre class='markdown' style='background-color: #ffefef;'> One space
320
+ Two spaces
321
+ Tab, space, tab
322
+ Tab, tab, tab and all is green!
323
+ {code_show_spaces code_background_color=#ffeedd}</pre>
563
324
  <p>That will produce:</p>
564
-
565
- <pre style='background-color: green;'><code>&not;One&not;space
325
+ <pre style='background-color: #ffeedd;'><code>&not;One&not;space
566
326
  &not;&not;Two&not;spaces
567
327
  &raquo;&nbsp;&nbsp;&nbsp;&not;&raquo;&nbsp;&nbsp;&nbsp;Tab,&not;space,&not;tab
568
- &raquo;&nbsp;&nbsp;&nbsp;&raquo;&nbsp;&nbsp;&nbsp;&raquo;&nbsp;&nbsp;&nbsp;Tab,&not;tab,&not;tab&not;and&not;all&not;is&not;green!
569
- </code></pre>
570
-
571
- <p>Example with css-style color:</p>
572
-
573
- <pre><code>@ code_background_color: #455678
574
-
575
- A strange color
576
- </code></pre>
577
-
578
- <p>produces:</p>
579
-
580
- <pre style='background-color: #455678;'><code>A strange color
581
- </code></pre>
582
-
583
- <p>Or highlighting (does not work well yet):</p>
584
-
585
- <pre><code>@ lang: xml
586
- &lt;div style=&quot;text-align:center&quot;&gt;Div&lt;/div&gt;
328
+ &raquo;&nbsp;&nbsp;&nbsp;&raquo;&nbsp;&nbsp;&nbsp;&raquo;&nbsp;&nbsp;&nbsp;Tab,&not;tab,&not;tab&not;and&not;all&not;is&not;green!</code></pre>
329
+ <p>Or highlighting (support depends on languages):</p>
330
+ <pre><code> &lt;div style=&quot;text-align:center&quot;&gt;Div&lt;/div&gt;
331
+ {lang=html}
587
332
  </code></pre>
588
-
589
333
  <p>produces:</p>
590
-
591
- <pre class='xml'><span class='punct'>&lt;</span><span class='tag'>div</span> <span class='attribute'>style</span><span class='punct'>=&quot;</span><span class='string'>text-align:center</span><span class='punct'>&quot;&gt;</span>Div<span class='punct'>&lt;/</span><span class='tag'>div</span><span class='punct'>&gt;</span></pre>
592
-
593
- <hr />
594
-
334
+ <pre class='xml'><span class='punct'>&lt;</span><span class='tag'>div</span> <span class='attribute'>style</span><span class='punct'>=&quot;</span><span class='string'>text-align:center</span><span class='punct'>&quot;&gt;</span>Div<span class='punct'>&lt;/</span><span class='tag'>div</span><span class='punct'>&gt;</span></pre><hr />
595
335
  <h2 id='features'><span class='maruku_section_number'>7. </span>Other Features</h2>
596
336
 
597
337
  <h3 id='automatic_generation_of_the_table_of_contents'><span class='maruku_section_number'>7.1. </span>Automatic generation of the table of contents</h3>
598
338
 
599
339
  <p>If you create a list, and then set the <code>toc</code> attribute, when rendering Maruku will create an auto-generated table of contents.</p>
600
-
601
- <pre><code>@ toc
602
- * This will become a table of contents (this text will be scraped).
340
+ <pre><code>* This will become a table of contents (this text will be scraped).
341
+ {toc}
603
342
  </code></pre>
604
-
605
343
  <p>You can see an example of this at the beginning of this document.</p>
606
344
 
607
345
  <h3 id='this_header_contains_emphasis_strong_text_and_'><span class='maruku_section_number'>7.2. </span>This header contains <em>emphasis</em> <strong>strong text</strong> and <code>code</code></h3>
@@ -613,43 +351,7 @@ This paragraph has the attribute `test` set to `true`.
613
351
  <h3 id='use_html_entities'><span class='maruku_section_number'>7.3. </span>Use HTML entities</h3>
614
352
 
615
353
  <p>If you want to use HTML entities, go on! We will take care of the translation to LaTeX:</p>
616
-
617
- <table>
618
- <thead>
619
- <tr><th>Entity</th><th>Result</th></tr>
620
- </thead>
621
- <tbody>
622
- <tr>
623
- <td style='text-align: left;'><code>&amp;copy;</code></td>
624
-
625
- <td style='text-align: left;'>&copy;</td>
626
- </tr>
627
-
628
- <tr>
629
- <td style='text-align: left;'><code>&amp;pound;</code></td>
630
-
631
- <td style='text-align: left;'>&pound;</td>
632
- </tr>
633
-
634
- <tr>
635
- <td style='text-align: left;'><code>a&amp;nbsp;b</code></td>
636
-
637
- <td style='text-align: left;'>a&nbsp;b</td>
638
- </tr>
639
-
640
- <tr>
641
- <td style='text-align: left;'><code>&amp;lambda;</code></td>
642
-
643
- <td style='text-align: left;'>&lambda;</td>
644
- </tr>
645
-
646
- <tr>
647
- <td style='text-align: left;'><code>&amp;mdash;</code></td>
648
-
649
- <td style='text-align: left;'>&mdash;</td>
650
- </tr>
651
- </tbody></table>
652
-
354
+ <table><thead><tr><th>Entity</th><th>Result</th></tr></thead><tbody><tr><td style='text-align: left;'><code>&amp;copy;</code></td><td style='text-align: left;'>&copy;</td></tr><tr><td style='text-align: left;'><code>&amp;pound;</code></td><td style='text-align: left;'>&pound;</td></tr><tr><td style='text-align: left;'><code>a&amp;nbsp;b</code></td><td style='text-align: left;'>a&nbsp;b</td></tr><tr><td style='text-align: left;'><code>&amp;lambda;</code></td><td style='text-align: left;'>&lambda;</td></tr><tr><td style='text-align: left;'><code>&amp;mdash;</code></td><td style='text-align: left;'>&mdash;</td></tr></tbody></table>
653
355
  <h2 id='future'><span class='maruku_section_number'>8. </span>Future developments</h2>
654
356
 
655
357
  <p>I think that <a href='http://sophos.berkeley.edu/macfarlane/pandoc/'>Pandoc</a> and <a href='http://fletcher.freeshell.org/wiki/MultiMarkdown'>MultiMarkdown</a> are very cool projects. However, they are written in Haskell and Perl, respectively. I would love to have an equivalent in Ruby.</p>
@@ -657,7 +359,6 @@ This paragraph has the attribute `test` set to `true`.
657
359
  <h3 id='a_syntax_for_adding_math'><span class='maruku_section_number'>8.1. </span>A syntax for adding math</h3>
658
360
 
659
361
  <p>Something inspired from LaTeX should be familiar to all:</p>
660
-
661
362
  <pre><code>This is inline math: $\alpha$
662
363
 
663
364
 
@@ -665,19 +366,6 @@ This is an equation with label:
665
366
 
666
367
  $ \alpha = \beta + \gamma $ (eq:1)
667
368
 
668
- This is a reference to equation: please see (eq:1)</code></pre>
669
-
670
- <div class='footnotes'>
671
- <hr />
672
-
673
- <ol>
674
- <li id='fn:1'>
675
- <p>I really was missing those.<a href='#fnref:1' rev='footnote'>&#8617;</a></p>
676
- </li>
677
- </ol>
678
- </div>
679
-
680
- <div class='maruku_signature'>
681
- <hr />
682
- <span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown interpreter'>Maruku</a> at 00:33 on Wednesday, January 03rd, 2007.</span></div>
683
- </body></html>
369
+ This is a reference to equation: please see (eq:1)</code></pre><div class='footnotes'><hr /><ol><li id='fn:1'>
370
+ <p>I really was missing those.</p>
371
+ <a href='#fnref:1' rev='footnote'>&#8617;</a></li></ol></div><div class='maruku_signature'><hr /><span style='font-size: small; font-style: italic'>Created by <a href='http://maruku.rubyforge.org' title='Maruku: a Markdown interpreter'>Maruku</a> at 21:05 on Saturday, January 06th, 2007.</span></div></body></html>