maruku 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. data/bin/maruku +74 -22
  2. data/bin/marutest +15 -3
  3. data/docs/{changelog-0.3.md → changelog.md} +47 -18
  4. data/docs/entity_test.html +253 -0
  5. data/docs/entity_test.md +21 -0
  6. data/docs/index.html +124 -31
  7. data/docs/markdown_syntax.html +46 -46
  8. data/docs/maruku.html +124 -31
  9. data/docs/maruku.md +47 -9
  10. data/docs/proposal.html +4 -4
  11. data/lib/maruku.rb +1 -0
  12. data/lib/maruku/defaults.rb +1 -1
  13. data/lib/maruku/helpers.rb +4 -4
  14. data/lib/maruku/input/parse_block.rb +39 -33
  15. data/lib/maruku/input/parse_doc.rb +57 -3
  16. data/lib/maruku/input/parse_span_better.rb +28 -8
  17. data/lib/maruku/input/rubypants.rb +225 -0
  18. data/lib/maruku/input/type_detection.rb +1 -0
  19. data/lib/maruku/output/to_html.rb +46 -47
  20. data/lib/maruku/output/to_latex.rb +166 -45
  21. data/lib/maruku/output/to_latex_entities.rb +75 -43
  22. data/lib/maruku/string_utils.rb +21 -19
  23. data/lib/maruku/structures.rb +21 -12
  24. data/lib/maruku/structures_inspect.rb +12 -3
  25. data/lib/maruku/tests/new_parser.rb +2 -1
  26. data/lib/maruku/version.rb +1 -1
  27. data/tests/unittest/abbreviations.md +8 -8
  28. data/tests/unittest/attributes/attributes.md +10 -10
  29. data/tests/unittest/attributes/circular.md +4 -4
  30. data/tests/unittest/attributes/default.md +3 -3
  31. data/tests/unittest/blank.md +2 -2
  32. data/tests/unittest/blanks_in_code.md +12 -12
  33. data/tests/unittest/code.md +4 -4
  34. data/tests/unittest/code2.md +7 -6
  35. data/tests/unittest/code3.md +16 -16
  36. data/tests/unittest/easy.md +4 -4
  37. data/tests/unittest/email.md +4 -4
  38. data/tests/unittest/encoding/iso-8859-1.md +2 -2
  39. data/tests/unittest/encoding/utf-8.md +2 -2
  40. data/tests/unittest/entities.md +20 -20
  41. data/tests/unittest/escaping.md +16 -16
  42. data/tests/unittest/extra_dl.md +17 -7
  43. data/tests/unittest/extra_header_id.md +11 -11
  44. data/tests/unittest/extra_table1.md +4 -4
  45. data/tests/unittest/footnotes.md +38 -28
  46. data/tests/unittest/headers.md +6 -6
  47. data/tests/unittest/hrule.md +6 -6
  48. data/tests/unittest/images.md +18 -16
  49. data/tests/unittest/inline_html.md +7 -29
  50. data/tests/unittest/inline_html2.md +3 -3
  51. data/tests/unittest/links.md +7 -27
  52. data/tests/unittest/list1.md +9 -8
  53. data/tests/unittest/list2.md +15 -12
  54. data/tests/unittest/list3.md +16 -14
  55. data/tests/unittest/list4.md +4 -4
  56. data/tests/unittest/lists.md +33 -29
  57. data/tests/unittest/lists_after_paragraph.md +36 -36
  58. data/tests/unittest/lists_ol.md +43 -38
  59. data/tests/unittest/misc_sw.md +172 -156
  60. data/tests/unittest/notyet/escape.md +8 -8
  61. data/tests/unittest/notyet/header_after_par.md +6 -6
  62. data/tests/unittest/notyet/ticks.md +4 -4
  63. data/tests/unittest/notyet/triggering.md +21 -21
  64. data/tests/unittest/olist.md +5 -5
  65. data/tests/unittest/one.md +1 -1
  66. data/tests/unittest/paragraph.md +1 -1
  67. data/tests/unittest/paragraph_rules/dont_merge_ref.md +1 -1
  68. data/tests/unittest/paragraph_rules/tab_is_blank.md +2 -2
  69. data/tests/unittest/paragraphs.md +5 -5
  70. data/tests/unittest/recover/recover_links.md +2 -2
  71. data/tests/unittest/references/long_example.md +27 -19
  72. data/tests/unittest/smartypants.md +148 -0
  73. data/tests/unittest/syntax_hl.md +14 -14
  74. data/tests/unittest/test.md +2 -2
  75. data/tests/unittest/wrapping.md +8 -8
  76. data/tests/unittest/xml_instruction.md +82 -0
  77. metadata +149 -160
  78. data/docs/TOFIX.html +0 -22
  79. data/docs/TOFIX.md +0 -3
  80. data/docs/changelog-0.2.13.html +0 -30
  81. data/docs/changelog-0.2.13.md +0 -6
  82. data/docs/changelog-0.3.html +0 -113
  83. data/docs/faq.html +0 -57
  84. data/docs/faq.md +0 -32
  85. data/docs/hidden_o_n_squared.md +0 -10
  86. data/docs/todo.html +0 -40
  87. data/docs/todo.md +0 -9
data/docs/maruku.html CHANGED
@@ -4,7 +4,7 @@
4
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>
5
5
  <h1 id='maruku_a_markdownsuperset_interpreter'>Mar<strong>u</strong>k<strong>u</strong>: a Markdown-superset interpreter</h1>
6
6
 
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>
7
+ <p><a href='http://maruku.rubyforge.org/'>Maruku</a> is a Markdown interpreter written in <a href='http://www.ruby-lang.org'>Ruby</a>.</p>
8
8
 
9
9
  <p>Maruku allows you to write in an easy-to-read-and-write syntax, like this:</p>
10
10
 
@@ -42,7 +42,7 @@
42
42
 
43
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>
44
44
 
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>
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 &ldquo;Mark&rdquo;, the first word in Markdown. I chose this name because Ruby is Japanese, and also the sillable &ldquo;ru&rdquo; appears in Maruku.</p>
46
46
  <hr />
47
47
  <p>Table of contents: (<strong>auto-generated by Maruku!</strong>)</p>
48
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 />
@@ -54,6 +54,54 @@
54
54
 
55
55
  <p>Have fun!</p>
56
56
 
57
+ <h4 id='changes_in_041_aka_typographer'>Changes in 0.4.1 aka &ldquo;Typographer&rdquo;</h4>
58
+
59
+ <ul>
60
+ <li>
61
+ <p>Implemented SmartyPants support:</p>
62
+ <pre><code>&#39;Twas a &quot;test&quot; to &#39;remember&#39; -- in the &#39;90s
63
+ --- while I was &lt;&lt;ok&gt;&gt;. She was 6\&quot;12\&#39;.</code></pre>
64
+ <blockquote>
65
+ <p>&lsquo;Twas a &ldquo;test&rdquo; to &lsquo;remember&rsquo; &ndash; in the &rsquo;90s &mdash; while I was &laquo;ok&raquo;. She was 6&quot;12&#39;.</p>
66
+ </blockquote>
67
+
68
+ <p>I adapted the code from RubyPants.</p>
69
+ </li>
70
+
71
+ <li>
72
+ <p>Server directives between <code>&lt;? ?&gt;</code> are properly preserved.</p>
73
+ </li>
74
+
75
+ <li>
76
+ <p>Changes in LaTeX export:</p>
77
+
78
+ <ul>
79
+ <li>
80
+ <p>Now Japanese text rendering sort of works, using the following packages:</p>
81
+ <pre><code>\usepackage[C40]{fontenc}
82
+ \usepackage[cjkjis]{ucs}
83
+ \usepackage[utf8x]{inputenc}
84
+ </code></pre>
85
+ <p>Nevertheless, I could only get bitmap fonts working &ndash; probably it&rsquo;s a problem with my setup.</p>
86
+
87
+ <p>A quick test: 日本、中国、ひらがな、カタカナ。</p>
88
+ </li>
89
+
90
+ <li>
91
+ <p>Fixed bugs in rendering of immediate links.</p>
92
+ </li>
93
+
94
+ <li>
95
+ <p>External packages are <code>require</code>d only if needed.</p>
96
+ </li>
97
+
98
+ <li>
99
+ <p>More symbols supported. See the symbol list <a href='http://maruku.rubyforge.org/entity_test.html'>in HTML</a> and <a href='http://maruku.rubyforge.org/entity_test.pdf'>in PDF</a>.</p>
100
+ </li>
101
+ </ul>
102
+ </li>
103
+ </ul>
104
+
57
105
  <h4 id='changes_in_04'>Changes in 0.4</h4>
58
106
 
59
107
  <ul>
@@ -63,7 +111,7 @@
63
111
 
64
112
  <li>Created <a href='http://maruku.rubyforge.org/rdoc/'>the RDOC documentation</a>.</li>
65
113
 
66
- <li>The <code>add_whitespace</code> method took too much time -- it was O(n^2).</li>
114
+ <li>The <code>add_whitespace</code> method took too much time &ndash; it was O(n^2).</li>
67
115
 
68
116
  <li>Added unit-tests for block-level elements.</li>
69
117
  </ul>
@@ -125,7 +173,7 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
125
173
  <p>(日本のガルは 大好き、でも、日本語は難しですから、そうぞ 英語話すガルを おしえてください).</p>
126
174
  </blockquote>
127
175
 
128
- <p>In the LaTeX version, these do not appear. I know how to do LaTeX with ISO-8859-1 encoding (European characters), but I&apos;m struggling with half-baked solutions for UTF-8 encoded documents.</p>
176
+ <p>In the LaTeX version, these do not appear. I know how to do LaTeX with ISO-8859-1 encoding (European characters), but I&rsquo;m struggling with half-baked solutions for UTF-8 encoded documents.</p>
129
177
  </li>
130
178
 
131
179
  <li>
@@ -154,11 +202,11 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
154
202
  <p>The development site is <a href='http://rubyforge.org/projects/maruku/'>http://rubyforge.org/projects/maruku/</a>.</p>
155
203
 
156
204
  <p>Install with:</p>
157
- <pre class='shell' style='background-color: #efefff;'>$ gem install maruku</pre>
205
+ <pre class='sh' style='background-color: #efefff;'>$ gem install maruku</pre>
158
206
  <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>
159
207
 
160
208
  <p>Anonymous access to the repository is possible with:</p>
161
- <pre class='shell' style='background-color: #efefff;'>$ svn checkout svn://rubyforge.org/var/svn/maruku</pre>
209
+ <pre class='sh' style='background-color: #efefff;'>$ svn checkout svn://rubyforge.org/var/svn/maruku</pre>
162
210
  <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>
163
211
 
164
212
  <h3 id='bugs_report'><span class='maruku_section_number'>2.1. </span>Bugs report</h3>
@@ -184,11 +232,11 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
184
232
  <ul>
185
233
  <li>
186
234
  <p><code>maruku</code> converts Markdown to HTML:</p>
187
- <pre class='shell' style='background-color: #efefff;'>$ maruku file.md # creates file.html</pre></li>
235
+ <pre class='sh' style='background-color: #efefff;'>$ maruku file.md # creates file.html</pre></li>
188
236
 
189
237
  <li>
190
238
  <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>
239
+ <pre class='sh' style='background-color: #efefff;'>$ marutex file.md # creates file.tex and file.pdf</pre></li>
192
240
  </ul>
193
241
 
194
242
  <h2 id='extra'><span class='maruku_section_number'>4. </span>Examples of PHP Markdown Extra syntax</h2>
@@ -196,15 +244,15 @@ Maruku (to_latex): parsing 0.49 sec + rendering 0.25 sec = 0.73 sec</code></pr
196
244
  <ul>
197
245
  <li>
198
246
  <p>tables</p>
199
- <pre class='markdown' style='background-color: #ffefef;'>Col1 | Very very long head | Very very long head|
247
+ <pre style='background-color: #ffefef;'><code>Col1 | Very very long head | Very very long head|
200
248
  -----|:-------------------:|-------------------:|
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>
249
+ cell | center-align | right-align |</code></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>
202
250
 
203
251
  <li>
204
252
  <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]
253
+ <pre style='background-color: #ffefef;'><code>* footnotes [^foot]
206
254
 
207
- [^foot]: I really was missing those.</pre></li>
255
+ [^foot]: I really was missing those.</code></pre></li>
208
256
  </ul>
209
257
 
210
258
  <ul>
@@ -218,14 +266,20 @@ cell | center-align | right-align |</pre><table><thead><tr><th>Col
218
266
 
219
267
  <li>
220
268
  <p>header ids</p>
221
- <pre class='markdown' style='background-color: #ffefef;'>## Download ## {#download}</pre>
269
+ <pre style='background-color: #ffefef;'><code>## Download ## {#download}</code></pre>
222
270
  <p>For example, <a href='#download'>a link to the download</a> header.</p>
223
271
  </li>
224
272
 
225
273
  <li>
226
274
  <p>definition lists</p>
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>
275
+ <pre style='background-color: #ffefef;'><code>Definition list
276
+ : something very hard to parse</code></pre>
277
+ <dl>
278
+ <dt>Definition list</dt>
279
+
280
+ <dd>something very hard to parse</dd>
281
+ </dl>
282
+ </li>
229
283
 
230
284
  <li>
231
285
  <p>abbreviations or <abbr title='Simply an abbreviation'>ABB</abbr> for short.</p>
@@ -254,7 +308,7 @@ cell | center-align | right-align |</pre><table><thead><tr><th>Col
254
308
 
255
309
  <h2 id='meta'><span class='maruku_section_number'>6. </span>New meta-data syntax</h2>
256
310
 
257
- <p>Maruku implements a syntax that allows to attach &quot;meta&quot; information to objects.</p>
311
+ <p>Maruku implements a syntax that allows to attach &ldquo;meta&rdquo; information to objects.</p>
258
312
 
259
313
  <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>
260
314
 
@@ -263,10 +317,11 @@ cell | center-align | right-align |</pre><table><thead><tr><th>Col
263
317
  <h3 id='metadata_for_the_document'><span class='maruku_section_number'>6.2. </span>Meta-data for the document</h3>
264
318
 
265
319
  <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
320
+ <pre style='background-color: #ffefef;'><code>Title: A simple document containing meta-headers
267
321
  CSS: style.css
268
322
 
269
- Content of the document</pre>
323
+ Content of the document
324
+ </code></pre>
270
325
  <p>When creating the document through</p>
271
326
  <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>
272
327
  <p>the title and stylesheet are added as expected.</p>
@@ -274,29 +329,65 @@ Content of the document</pre>
274
329
  <p>Meta-data keys are assumed to be case-insensitive.</p>
275
330
  <hr />
276
331
  <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>
332
+
333
+ <dl>
334
+ <dt><strong><code>title</code>, <code>subject</code></strong></dt>
335
+
336
+ <dd>
278
337
  <p>(document) Sets the title of the document (HTML: used in the <code>TITLE</code> element).</p>
279
- </dd><dt><strong><code>use_numbered_headers</code></strong></dt><dd>
338
+ </dd>
339
+
340
+ <dt><strong><code>use_numbered_headers</code></strong></dt>
341
+
342
+ <dd>
280
343
  <p>(document) If <code>true</code>, headers are numbered (just like this document). Default is <code>false</code>.</p>
281
- </dd><dt><strong><code>css</code></strong></dt><dd>
344
+ </dd>
345
+
346
+ <dt><strong><code>css</code></strong></dt>
347
+
348
+ <dd>
282
349
  <p>(document, HTML) Url of stylesheet.</p>
283
- </dd><dt><strong><code>html_use_syntax</code></strong></dt><dd>
350
+ </dd>
351
+
352
+ <dt><strong><code>html_use_syntax</code></strong></dt>
353
+
354
+ <dd>
284
355
  <p>(document, HTML) If set, use the <a href='http://syntax.rubyforge.org/'>Ruby <code>syntax</code> library</a> to add source highlighting.</p>
285
- </dd><dt><strong><code>latex_use_listings</code></strong></dt><dd>
356
+ </dd>
357
+
358
+ <dt><strong><code>latex_use_listings</code></strong></dt>
359
+
360
+ <dd>
286
361
  <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>
287
362
 
288
363
  <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>
364
+ </dd>
365
+
366
+ <dt><strong><code>style</code>, <code>id</code>, <code>class</code></strong></dt>
367
+
368
+ <dd>
290
369
  <p>(any block object, HTML) Standard CSS attributes are copied.</p>
291
- </dd><dt><strong><code>lang</code></strong></dt><dd>
370
+ </dd>
371
+
372
+ <dt><strong><code>lang</code></strong></dt>
373
+
374
+ <dd>
292
375
  <p>(code blocks) Name of programming language (<code>ruby</code>) for syntax highlighting.</p>
293
376
 
294
377
  <p>Default for this is <code>code_lang</code> in document.</p>
295
378
 
296
379
  <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>
380
+ </dd>
381
+
382
+ <dt><strong><code>code_show_spaces</code></strong></dt>
383
+
384
+ <dd>
298
385
  <p>Shows tabs and newlines (default is read in the document object).</p>
299
- </dd><dt><strong><code>code_background_color</code></strong></dt><dd>
386
+ </dd>
387
+
388
+ <dt><strong><code>code_background_color</code></strong></dt>
389
+
390
+ <dd>
300
391
  <p>Background color for code blocks. (default is read in the document object).</p>
301
392
 
302
393
  <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>
@@ -312,15 +403,17 @@ Content of the document</pre>
312
403
  <p>For example, for <code>#0000ff</code>, the macro is called as: <code>\color[rgb]{0,0,1}</code>.</p>
313
404
  </li>
314
405
  </ul>
315
- </dd></dl>
406
+ </dd>
407
+ </dl>
408
+
316
409
  <h3 id='examples'><span class='maruku_section_number'>6.4. </span>Examples</h3>
317
410
 
318
411
  <p>An example of this is the following:</p>
319
- <pre class='markdown' style='background-color: #ffefef;'> One space
412
+ <pre style='background-color: #ffefef;'><code> One space
320
413
  Two spaces
321
414
  Tab, space, tab
322
415
  Tab, tab, tab and all is green!
323
- {code_show_spaces code_background_color=#ffeedd}</pre>
416
+ {code_show_spaces code_background_color=#ffeedd}</code></pre>
324
417
  <p>That will produce:</p>
325
418
  <pre style='background-color: #ffeedd;'><code>&not;One&not;space
326
419
  &not;&not;Two&not;spaces
@@ -368,4 +461,4 @@ $ \alpha = \beta + \gamma $ (eq:1)
368
461
 
369
462
  This is a reference to equation: please see (eq:1)</code></pre><div class='footnotes'><hr /><ol><li id='fn:1'>
370
463
  <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>
464
+ <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 for Ruby'>Maruku</a> at 23:50 on Monday, January 08th, 2007.</span></div></body></html>
data/docs/maruku.md CHANGED
@@ -1,11 +1,9 @@
1
1
  CSS: style.css
2
- LaTeX_use_listings: true
3
- html_use_syntax: true
4
- use_numbered_headers: true
2
+ Use numbered headers: true
3
+ HTML use syntax: true
4
+ LaTeX use listings: true
5
+ LaTeX CJK: true
5
6
 
6
- {ruby}: lang=ruby code_background_color='#efffef'
7
- {shell}: lang=shell code_background_color='#efefff'
8
- {markdown}: lang=markdown code_background_color='#ffefef'
9
7
 
10
8
 
11
9
  Mar**u**k**u**: a Markdown-superset interpreter
@@ -27,8 +25,8 @@ or LaTeX, which is then converted to PDF:
27
25
 
28
26
  Maruku implements:
29
27
 
30
- * the original [Markdown syntax][markdown_html] ([HTML][markdown_html] or
31
- [PDF][markdown_pdf]), translated by Maruku).
28
+ * the original [Markdown syntax][markdown_html]
29
+ ([HTML][markdown_html] or [PDF][markdown_pdf]), translated by Maruku).
32
30
 
33
31
  * all the improvements in [PHP Markdown Extra][].
34
32
 
@@ -43,11 +41,12 @@ the [katakana][] translitteration
43
41
  of "Mark", the first word in Markdown. I chose this name because Ruby
44
42
  is Japanese, and also the sillable "ru" appears in Maruku.
45
43
 
44
+
46
45
  [romaji]: http://en.wikipedia.org/wiki/Romaji
47
46
  [katakana]: http://en.wikipedia.org/wiki/Katakana
48
47
 
49
48
  [tests]: http://maruku.rubyforge.org/tests/
50
- [maruku]: <http://maruku.rubyforge.org/>
49
+ [maruku]: http://maruku.rubyforge.org/
51
50
  [markdown_html]: http://maruku.rubyforge.org/markdown_syntax.html
52
51
  [markdown_pdf]: http://maruku.rubyforge.org/markdown_syntax.pdf
53
52
  [this_md]: http://maruku.rubyforge.org/maruku.md
@@ -64,6 +63,12 @@ Table of contents: (**auto-generated by Maruku!**)
64
63
 
65
64
  * * *
66
65
 
66
+ {ruby}: lang=ruby code_background_color='#efffef'
67
+ {shell}: lang=sh code_background_color='#efefff'
68
+ {markdown}: code_background_color='#ffefef'
69
+
70
+
71
+
67
72
  Release notes {#release_notes}
68
73
  --------------
69
74
 
@@ -78,6 +83,39 @@ please write to the [Markdown-discuss mailing list][markdown-discuss].
78
83
 
79
84
  Have fun!
80
85
 
86
+ #### Changes in 0.4.1 aka "Typographer" ####
87
+
88
+ * Implemented SmartyPants support:
89
+
90
+ 'Twas a "test" to 'remember' -- in the '90s
91
+ --- while I was <<ok>>. She was 6\"12\'.
92
+ > 'Twas a "test" to 'remember' -- in the '90s --- while I was <<ok>>.
93
+ > She was 6\"12\'.
94
+
95
+ I adapted the code from RubyPants.
96
+
97
+ * Server directives between `<? ?>` are properly preserved.
98
+ * Changes in LaTeX export:
99
+
100
+ * Now Japanese text rendering sort of works, using the following packages:
101
+
102
+ \usepackage[C40]{fontenc}
103
+ \usepackage[cjkjis]{ucs}
104
+ \usepackage[utf8x]{inputenc}
105
+
106
+ Nevertheless, I could only get bitmap fonts working -- probably it's a problem
107
+ with my setup.
108
+
109
+ A quick test: 日本、中国、ひらがな、カタカナ。
110
+
111
+ * Fixed bugs in rendering of immediate links.
112
+ * External packages are `require`d only if needed.
113
+ * More symbols supported.
114
+ See the symbol list
115
+ [in HTML](http://maruku.rubyforge.org/entity_test.html) and
116
+ [in PDF](http://maruku.rubyforge.org/entity_test.pdf).
117
+
118
+
81
119
  #### Changes in 0.4 ####
82
120
 
83
121
  * First implementation of [the new meta-data syntax][meta].
data/docs/proposal.html CHANGED
@@ -71,7 +71,7 @@ second line of paragraph
71
71
  </li>
72
72
 
73
73
  <li>
74
- <p><code>.myclass</code> means &quot;add <code>myclass</code> to the current <code>class</code> attribute&quot;.</p>
74
+ <p><code>.myclass</code> means &ldquo;add <code>myclass</code> to the current <code>class</code> attribute&rdquo;.</p>
75
75
 
76
76
  <p>So these are equivalent:</p>
77
77
  <pre><code>{.class1 .class2}
@@ -252,7 +252,7 @@ highlight
252
252
 
253
253
  <li>
254
254
  <blockquote>
255
- <p>Another question: does it makes sense to define <code>&lt;span&gt;</code> within Markdown when you can&apos;t have <code>&lt;b&gt;</code> and <code>&lt;i&gt;</code>, or the more meaningful <code>&lt;cite&gt;</code>, <code>&lt;q&gt;</code>, <code>&lt;dfn&gt;</code>, and <code>&lt;var&gt;</code>? We have to draw the line somewhere, where should it be? Another good question for the list.</p>
255
+ <p>Another question: does it makes sense to define <code>&lt;span&gt;</code> within Markdown when you can&rsquo;t have <code>&lt;b&gt;</code> and <code>&lt;i&gt;</code>, or the more meaningful <code>&lt;cite&gt;</code>, <code>&lt;q&gt;</code>, <code>&lt;dfn&gt;</code>, and <code>&lt;var&gt;</code>? We have to draw the line somewhere, where should it be? Another good question for the list.</p>
256
256
  </blockquote>
257
257
 
258
258
  <p>Any opinion?</p>
@@ -297,8 +297,8 @@ Paragraph..
297
297
  <p>Question: should <code>:</code> be a synonym for <code>=</code> in attributes list?</p>
298
298
 
299
299
  <blockquote>
300
- <p>No, because &apos;:&apos; is used for XML namespaces (<code>xml:lang=en</code>)</p>
300
+ <p>No, because &rsquo;:&rsquo; is used for XML namespaces (<code>xml:lang=en</code>)</p>
301
301
  </blockquote>
302
302
  </li>
303
303
  </ul>
304
- <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 20:29 on Saturday, January 06th, 2007.</span></div></body></html>
304
+ <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 for Ruby'>Maruku</a> at 23:18 on Monday, January 08th, 2007.</span></div></body></html>
data/lib/maruku.rb CHANGED
@@ -97,6 +97,7 @@ require 'maruku/input/parse_block'
97
97
  # Code for parsing Markdown span-level elements
98
98
  require 'maruku/input/charsource'
99
99
  require 'maruku/input/parse_span_better'
100
+ require 'maruku/input/rubypants'
100
101
 
101
102
  require 'maruku/attributes'
102
103
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  module MaRuKu
23
23
  module Defaults
24
- DEFAULT_CODE_COLOR = '#ffaaff'
24
+ DEFAULT_CODE_COLOR = '#fef'
25
25
 
26
26
  DefaultAttributes = <<EOF
27
27
 
@@ -32,7 +32,7 @@ module Helpers
32
32
 
33
33
  def md_el(node_type, children=[], meta={}, al=nil)
34
34
  e = MDElement.new(node_type, children, meta, al)
35
- e.doc = self
35
+ e.doc = @doc
36
36
  return e
37
37
  end
38
38
 
@@ -169,9 +169,9 @@ module Helpers
169
169
  md_el(:ald, [], {:ald_id=>id,:ald=>al})
170
170
  end
171
171
 
172
- # Server directive <? code ?>
173
- def md_server(code)
174
- md_el(:server, [], {:code=>code})
172
+ # Server directive <?target code... ?>
173
+ def md_xml_instr(target, code)
174
+ md_el(:xml_instr, [], {:target=>target, :code=>code})
175
175
  end
176
176
  end
177
177
  end
@@ -43,39 +43,38 @@ module MaRuKu; module In; module Markdown; module BlockLevelParser
43
43
  when :empty;
44
44
  src.ignore_line
45
45
  when :ial
46
- src.shift_line =~ /\s*\{([^\}]*)\}\s*/
47
- al = $1
48
- al = read_attribute_list(CharSource.new(al), context=nil, break_on=[nil])
49
- if not output.empty?
50
- output.last.al = al
46
+ m = /\s*\{([^\}]*)\}\s*/.match src.shift_line
47
+ al = read_attribute_list(CharSource.new(m[1]), context=nil, break_on=[nil])
48
+ if last = output.last
49
+ last.al = al
51
50
  else
52
- maruku_error "An attribute list at beginning of context {#{al.to_md}}"
53
- tell_user "I will ignore this AL: {#{al.to_md}}"
51
+ maruku_error "An attribute list at beginning of context {#{al.to_md}}", src
52
+ maruku_recover "I will ignore this AL: {#{al.to_md}}", src
54
53
  end
55
54
  when :ald
56
- output << read_ald(src)
55
+ output.push read_ald(src)
57
56
  when :text
58
57
  if src.cur_line =~ MightBeTableHeader and
59
58
  (src.next_line && src.next_line =~ TableSeparator)
60
- output << read_table(src)
59
+ output.push read_table(src)
61
60
  elsif [:header1,:header2].include? src.next_line.md_type
62
- output << read_header12(src)
61
+ output.push read_header12(src)
63
62
  elsif eventually_comes_a_def_list(src)
64
63
  definition = read_definition(src)
65
64
  if output.last && output.last.node_type == :definition_list
66
65
  output.last.children << definition
67
66
  else
68
- output << md_el(:definition_list, [definition])
67
+ output.push md_el(:definition_list, [definition])
69
68
  end
70
69
  else # Start of a paragraph
71
- output << read_paragraph(src)
70
+ output.push read_paragraph(src)
72
71
  end
73
72
  when :header2, :hrule
74
73
  # hrule
75
74
  src.shift_line
76
- output << md_hrule()
75
+ output.push md_hrule()
77
76
  when :header3
78
- output << read_header3(src)
77
+ output.push read_header3(src)
79
78
  when :ulist, :olist
80
79
  list_type = src.cur_line.md_type == :ulist ? :ul : :ol
81
80
  li = read_list_item(src)
@@ -83,37 +82,27 @@ module MaRuKu; module In; module Markdown; module BlockLevelParser
83
82
  if output.last && output.last.node_type == list_type
84
83
  output.last.children << li
85
84
  else
86
- output << md_el(list_type, [li])
85
+ output.push md_el(list_type, [li])
87
86
  end
88
- when :quote; output << read_quote(src)
87
+ when :quote; output.push read_quote(src)
89
88
  when :code; e = read_code(src); output << e if e
90
89
  when :raw_html; e = read_raw_html(src); output << e if e
91
90
 
92
- when :footnote_text; output << read_footnote_text(src)
93
- when :ref_definition; output << read_ref_definition(src)
94
- when :abbreviation; output << read_abbreviation(src)
95
-
91
+ when :footnote_text; output.push read_footnote_text(src)
92
+ when :ref_definition; output.push read_ref_definition(src)
93
+ when :abbreviation; output.push read_abbreviation(src)
94
+ when :xml_instr; output.push read_xml_instruction(src)
96
95
  # # these do not produce output
97
96
  when :metadata;
98
97
  maruku_error "Please use the new meta-data syntax: \n"+
99
98
  " http://maruku.rubyforge.org/proposal.html\n", src
100
99
  src.ignore_line
101
- # warn if we forgot something
102
- else
100
+ else # warn if we forgot something
103
101
  md_type = src.cur_line.md_type
104
102
  line = src.cur_line
105
103
  maruku_error "Ignoring line '#{line}' type = #{md_type}", src
106
104
  src.shift_line
107
105
  end
108
-
109
- # FIXME
110
- # if current_metadata and output.last
111
- # output.last.meta.merge! current_metadata
112
- # current_metadata = nil
113
- # puts "meta for #{output.last.node_type}\n #{output.last.meta.inspect}"
114
- # end
115
- # current_metadata = just_read_metadata
116
- # just_read_metadata = nil
117
106
  end
118
107
 
119
108
  # See for each list if we can omit the paragraphs and use li_span
@@ -186,7 +175,24 @@ module MaRuKu; module In; module Markdown; module BlockLevelParser
186
175
  return md_header(level, text, al)
187
176
  end
188
177
 
189
-
178
+ def read_xml_instruction(src)
179
+ m = /^\s*<\?((\w+)\s*)?(.*)$/.match src.shift_line
180
+ raise "BugBug" if not m
181
+ target = m[2] || ''
182
+ code = m[3]
183
+ until code =~ /\?>/
184
+ code += "\n"+src.shift_line
185
+ end
186
+ if not code =~ (/\?>\s*$/)
187
+ garbage = (/\?>(.*)$/.match(code))[1]
188
+ maruku_error "Trailing garbage on last line: #{garbage.inspect}:\n"+
189
+ add_tabs(code, 1, '|'), src
190
+ end
191
+ code.gsub!(/\?>\s*$/, '')
192
+
193
+ return md_xml_instr(target, code)
194
+ end
195
+
190
196
  def read_raw_html(src)
191
197
  h = HTMLHelper.new
192
198
  begin
@@ -210,7 +216,7 @@ module MaRuKu; module In; module Markdown; module BlockLevelParser
210
216
  while src.cur_line
211
217
  # :olist does not break
212
218
  case t = src.cur_line.md_type
213
- when :quote,:header3,:empty,:raw_html,:ref_definition,:ial
219
+ when :quote,:header3,:empty,:raw_html,:ref_definition,:ial,:xml_instr
214
220
  break
215
221
  when :olist,:ulist
216
222
  break if src.next_line.md_type == t