maruku 0.6.1 → 0.7.0.beta1

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 (263) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/MIT-LICENSE.txt +20 -0
  5. data/bin/maruku +153 -152
  6. data/bin/marutex +2 -29
  7. data/data/entities.xml +261 -0
  8. data/docs/math.md +14 -18
  9. data/lib/maruku.rb +65 -77
  10. data/lib/maruku/attributes.rb +109 -214
  11. data/lib/maruku/defaults.rb +45 -67
  12. data/lib/maruku/document.rb +43 -0
  13. data/lib/maruku/element.rb +112 -0
  14. data/lib/maruku/errors.rb +71 -0
  15. data/lib/maruku/ext/div.rb +105 -113
  16. data/lib/maruku/ext/fenced_code.rb +97 -0
  17. data/lib/maruku/ext/math.rb +22 -26
  18. data/lib/maruku/ext/math/elements.rb +20 -26
  19. data/lib/maruku/ext/math/mathml_engines/blahtex.rb +92 -104
  20. data/lib/maruku/ext/math/mathml_engines/itex2mml.rb +33 -26
  21. data/lib/maruku/ext/math/mathml_engines/none.rb +11 -19
  22. data/lib/maruku/ext/math/mathml_engines/ritex.rb +2 -4
  23. data/lib/maruku/ext/math/parsing.rb +107 -113
  24. data/lib/maruku/ext/math/to_html.rb +184 -187
  25. data/lib/maruku/ext/math/to_latex.rb +30 -21
  26. data/lib/maruku/helpers.rb +158 -257
  27. data/lib/maruku/html.rb +254 -0
  28. data/lib/maruku/input/charsource.rb +272 -319
  29. data/lib/maruku/input/extensions.rb +62 -63
  30. data/lib/maruku/input/html_helper.rb +220 -189
  31. data/lib/maruku/input/linesource.rb +90 -110
  32. data/lib/maruku/input/mdline.rb +129 -0
  33. data/lib/maruku/input/parse_block.rb +618 -612
  34. data/lib/maruku/input/parse_doc.rb +145 -215
  35. data/lib/maruku/input/parse_span.rb +658 -0
  36. data/lib/maruku/input/rubypants.rb +200 -128
  37. data/lib/maruku/inspect_element.rb +60 -0
  38. data/lib/maruku/maruku.rb +10 -31
  39. data/lib/maruku/output/entity_table.rb +33 -0
  40. data/lib/maruku/output/s5/fancy.rb +462 -462
  41. data/lib/maruku/output/s5/to_s5.rb +115 -135
  42. data/lib/maruku/output/to_html.rb +898 -983
  43. data/lib/maruku/output/to_latex.rb +561 -560
  44. data/lib/maruku/output/to_markdown.rb +207 -162
  45. data/lib/maruku/output/to_s.rb +11 -52
  46. data/lib/maruku/string_utils.rb +129 -179
  47. data/lib/maruku/toc.rb +185 -196
  48. data/lib/maruku/version.rb +33 -38
  49. data/spec/block_docs/abbrev.md +776 -0
  50. data/{tests/unittest → spec/block_docs}/abbreviations.md +11 -20
  51. data/{tests/unittest → spec/block_docs}/alt.md +2 -14
  52. data/{tests/unittest/pending → spec/block_docs}/amps.md +1 -13
  53. data/{tests/unittest → spec/block_docs}/attributes/att2.md +0 -12
  54. data/{tests/unittest → spec/block_docs}/attributes/att3.md +2 -14
  55. data/{tests/unittest → spec/block_docs}/attributes/attributes.md +12 -16
  56. data/{tests/unittest → spec/block_docs}/attributes/circular.md +0 -12
  57. data/{tests/unittest → spec/block_docs}/attributes/default.md +1 -13
  58. data/{tests/unittest → spec/block_docs}/blank.md +0 -12
  59. data/{tests/unittest → spec/block_docs}/blanks_in_code.md +16 -15
  60. data/{tests/unittest/loss.md → spec/block_docs/bug_def.md} +6 -18
  61. data/{tests/unittest → spec/block_docs}/bug_table.md +3 -15
  62. data/{tests/unittest → spec/block_docs}/code.md +7 -14
  63. data/{tests/unittest → spec/block_docs}/code2.md +4 -14
  64. data/{tests/unittest → spec/block_docs}/code3.md +12 -16
  65. data/{tests/unittest → spec/block_docs}/data_loss.md +2 -14
  66. data/{tests/unittest → spec/block_docs}/divs/div1.md +0 -12
  67. data/{tests/unittest → spec/block_docs}/divs/div2.md +0 -12
  68. data/{tests/unittest → spec/block_docs}/divs/div3_nest.md +3 -15
  69. data/{tests/unittest → spec/block_docs}/easy.md +1 -13
  70. data/spec/block_docs/email.md +29 -0
  71. data/{tests/unittest/pending → spec/block_docs}/empty_cells.md +3 -15
  72. data/{tests/unittest → spec/block_docs}/encoding/iso-8859-1.md +1 -14
  73. data/{tests/unittest → spec/block_docs}/encoding/utf-8.md +0 -12
  74. data/{tests/unittest → spec/block_docs}/entities.md +27 -29
  75. data/{tests/unittest/notyet → spec/block_docs}/escape.md +2 -14
  76. data/{tests/unittest → spec/block_docs}/escaping.md +11 -22
  77. data/{tests/unittest → spec/block_docs}/extra_dl.md +2 -13
  78. data/{tests/unittest → spec/block_docs}/extra_header_id.md +14 -20
  79. data/{tests/unittest → spec/block_docs}/extra_table1.md +3 -15
  80. data/spec/block_docs/fenced_code_blocks.md +66 -0
  81. data/spec/block_docs/fenced_code_blocks_highlighted.md +18 -0
  82. data/{tests/unittest → spec/block_docs}/footnotes.md +12 -24
  83. data/spec/block_docs/footnotes2.md +78 -0
  84. data/spec/block_docs/hard.md +25 -0
  85. data/spec/block_docs/header_after_par.md +62 -0
  86. data/{tests/unittest → spec/block_docs}/headers.md +10 -18
  87. data/{tests/unittest → spec/block_docs}/hex_entities.md +7 -18
  88. data/{tests/unittest → spec/block_docs}/hrule.md +5 -12
  89. data/{tests/unittest → spec/block_docs}/html3.md +1 -13
  90. data/{tests/unittest → spec/block_docs}/html4.md +2 -14
  91. data/{tests/unittest → spec/block_docs}/html5.md +2 -14
  92. data/spec/block_docs/html_block_in_para.md +22 -0
  93. data/spec/block_docs/html_inline.md +25 -0
  94. data/spec/block_docs/html_trailing.md +31 -0
  95. data/spec/block_docs/ie.md +62 -0
  96. data/spec/block_docs/iframe.md +29 -0
  97. data/{tests/unittest → spec/block_docs}/images.md +22 -28
  98. data/{tests/unittest → spec/block_docs}/images2.md +7 -17
  99. data/{tests/unittest → spec/block_docs}/inline_html.md +37 -67
  100. data/{tests/unittest → spec/block_docs}/inline_html2.md +1 -13
  101. data/spec/block_docs/inline_html_beginning.md +10 -0
  102. data/spec/block_docs/issue20.md +9 -0
  103. data/spec/block_docs/issue26.md +22 -0
  104. data/spec/block_docs/issue29.md +9 -0
  105. data/spec/block_docs/issue30.md +30 -0
  106. data/spec/block_docs/issue31.md +25 -0
  107. data/spec/block_docs/issue40.md +40 -0
  108. data/spec/block_docs/issue64.md +55 -0
  109. data/spec/block_docs/issue67.md +19 -0
  110. data/spec/block_docs/issue70.md +11 -0
  111. data/spec/block_docs/issue72.md +17 -0
  112. data/spec/block_docs/issue74.md +38 -0
  113. data/spec/block_docs/issue79.md +15 -0
  114. data/spec/block_docs/issue83.md +13 -0
  115. data/spec/block_docs/issue85.md +25 -0
  116. data/spec/block_docs/issue88.md +19 -0
  117. data/spec/block_docs/issue89.md +12 -0
  118. data/spec/block_docs/issue90.md +38 -0
  119. data/{tests/unittest/pending → spec/block_docs}/link.md +21 -18
  120. data/{tests/unittest → spec/block_docs}/links.md +33 -32
  121. data/spec/block_docs/links2.md +21 -0
  122. data/{tests/unittest → spec/block_docs}/list1.md +0 -12
  123. data/{tests/unittest → spec/block_docs}/list12.md +2 -14
  124. data/{tests/unittest → spec/block_docs}/list2.md +2 -14
  125. data/spec/block_docs/list_multipara.md +42 -0
  126. data/{tests/unittest → spec/block_docs}/lists.md +28 -29
  127. data/{tests/unittest → spec/block_docs}/lists10.md +2 -14
  128. data/spec/block_docs/lists11.md +23 -0
  129. data/spec/block_docs/lists12.md +43 -0
  130. data/spec/block_docs/lists13.md +55 -0
  131. data/spec/block_docs/lists14.md +61 -0
  132. data/spec/block_docs/lists15.md +36 -0
  133. data/spec/block_docs/lists6.md +88 -0
  134. data/spec/block_docs/lists7b.md +58 -0
  135. data/spec/block_docs/lists9.md +53 -0
  136. data/{tests/unittest → spec/block_docs}/lists_after_paragraph.md +19 -25
  137. data/spec/block_docs/lists_blank.md +35 -0
  138. data/{tests/unittest/list3.md → spec/block_docs/lists_blockquote_code.md} +2 -14
  139. data/{tests/unittest/list4.md → spec/block_docs/lists_need_blank_line.md} +50 -21
  140. data/spec/block_docs/lists_nested.md +44 -0
  141. data/spec/block_docs/lists_nested_blankline.md +28 -0
  142. data/spec/block_docs/lists_nested_deep.md +43 -0
  143. data/{tests/unittest → spec/block_docs}/lists_ol.md +37 -54
  144. data/spec/block_docs/lists_paraindent.md +47 -0
  145. data/spec/block_docs/lists_tab.md +54 -0
  146. data/spec/block_docs/loss.md +17 -0
  147. data/spec/block_docs/math-blahtex/equations.md +30 -0
  148. data/spec/block_docs/math-blahtex/inline.md +48 -0
  149. data/spec/block_docs/math-blahtex/math2.md +45 -0
  150. data/spec/block_docs/math-blahtex/table.md +25 -0
  151. data/spec/block_docs/math/embedded_invalid_svg.md +79 -0
  152. data/spec/block_docs/math/embedded_svg.md +97 -0
  153. data/spec/block_docs/math/equations.md +44 -0
  154. data/{tests/unittest → spec/block_docs}/math/inline.md +7 -19
  155. data/spec/block_docs/math/math2.md +45 -0
  156. data/{tests/unittest → spec/block_docs}/math/notmath.md +0 -12
  157. data/spec/block_docs/math/raw_mathml.md +87 -0
  158. data/spec/block_docs/math/table.md +25 -0
  159. data/{tests/unittest → spec/block_docs}/math/table2.md +5 -17
  160. data/{tests/unittest → spec/block_docs}/misc_sw.md +181 -118
  161. data/{tests/unittest → spec/block_docs}/olist.md +6 -18
  162. data/{tests/unittest → spec/block_docs}/one.md +0 -12
  163. data/{tests/unittest → spec/block_docs}/paragraph.md +0 -12
  164. data/{tests/unittest → spec/block_docs}/paragraph_rules/dont_merge_ref.md +4 -12
  165. data/{tests/unittest → spec/block_docs}/paragraph_rules/tab_is_blank.md +0 -12
  166. data/{tests/unittest → spec/block_docs}/paragraphs.md +1 -13
  167. data/{tests/unittest → spec/block_docs}/recover/recover_links.md +4 -16
  168. data/{tests/unittest/pending/ref.md → spec/block_docs/ref_with_period.md} +7 -16
  169. data/spec/block_docs/ref_with_title.md +22 -0
  170. data/{tests/unittest → spec/block_docs}/references/long_example.md +16 -23
  171. data/{tests/unittest → spec/block_docs}/references/spaces_and_numbers.md +0 -12
  172. data/{tests/unittest → spec/block_docs}/smartypants.md +24 -31
  173. data/{tests/unittest → spec/block_docs}/syntax_hl.md +13 -17
  174. data/{tests/unittest → spec/block_docs}/table_attributes.md +2 -14
  175. data/spec/block_docs/tables.md +58 -0
  176. data/{tests/unittest → spec/block_docs}/test.md +1 -13
  177. data/{tests/unittest/notyet → spec/block_docs}/ticks.md +1 -13
  178. data/spec/block_docs/toc.md +87 -0
  179. data/{tests/unittest/notyet → spec/block_docs}/triggering.md +14 -25
  180. data/{tests/unittest → spec/block_docs}/underscore_in_words.md +0 -12
  181. data/{tests/unittest → spec/block_docs}/wrapping.md +4 -16
  182. data/spec/block_docs/xml.md +33 -0
  183. data/{tests/unittest → spec/block_docs}/xml2.md +0 -12
  184. data/spec/block_docs/xml3.md +24 -0
  185. data/{tests/unittest → spec/block_docs}/xml_instruction.md +9 -20
  186. data/spec/block_spec.rb +110 -0
  187. data/spec/cli_spec.rb +8 -0
  188. data/spec/span_spec.rb +256 -0
  189. data/spec/spec_helper.rb +2 -0
  190. data/spec/to_html_utf8_spec.rb +13 -0
  191. metadata +205 -243
  192. metadata.gz.sig +3 -0
  193. data/Rakefile +0 -48
  194. data/bin/marudown +0 -29
  195. data/bin/marutest +0 -345
  196. data/docs/changelog.md +0 -334
  197. data/lib/maruku/errors_management.rb +0 -92
  198. data/lib/maruku/ext/math/latex_fix.rb +0 -12
  199. data/lib/maruku/input/parse_span_better.rb +0 -746
  200. data/lib/maruku/input/type_detection.rb +0 -147
  201. data/lib/maruku/output/to_latex_entities.rb +0 -367
  202. data/lib/maruku/output/to_latex_strings.rb +0 -64
  203. data/lib/maruku/structures.rb +0 -167
  204. data/lib/maruku/structures_inspect.rb +0 -87
  205. data/lib/maruku/structures_iterators.rb +0 -61
  206. data/lib/maruku/tests/benchmark.rb +0 -82
  207. data/lib/maruku/tests/new_parser.rb +0 -373
  208. data/lib/maruku/tests/tests.rb +0 -136
  209. data/lib/maruku/usage/example1.rb +0 -33
  210. data/tests/bugs/code_in_links.md +0 -101
  211. data/tests/bugs/complex_escaping.md +0 -38
  212. data/tests/math/syntax.md +0 -46
  213. data/tests/math_usage/document.md +0 -13
  214. data/tests/others/abbreviations.md +0 -11
  215. data/tests/others/blank.md +0 -4
  216. data/tests/others/code.md +0 -5
  217. data/tests/others/code2.md +0 -8
  218. data/tests/others/code3.md +0 -16
  219. data/tests/others/email.md +0 -4
  220. data/tests/others/entities.md +0 -19
  221. data/tests/others/escaping.md +0 -16
  222. data/tests/others/extra_dl.md +0 -101
  223. data/tests/others/extra_header_id.md +0 -13
  224. data/tests/others/extra_table1.md +0 -40
  225. data/tests/others/footnotes.md +0 -17
  226. data/tests/others/headers.md +0 -10
  227. data/tests/others/hrule.md +0 -10
  228. data/tests/others/images.md +0 -20
  229. data/tests/others/inline_html.md +0 -42
  230. data/tests/others/links.md +0 -38
  231. data/tests/others/list1.md +0 -4
  232. data/tests/others/list2.md +0 -5
  233. data/tests/others/list3.md +0 -8
  234. data/tests/others/lists.md +0 -32
  235. data/tests/others/lists_after_paragraph.md +0 -44
  236. data/tests/others/lists_ol.md +0 -39
  237. data/tests/others/misc_sw.md +0 -105
  238. data/tests/others/one.md +0 -1
  239. data/tests/others/paragraphs.md +0 -13
  240. data/tests/others/sss06.md +0 -352
  241. data/tests/others/test.md +0 -4
  242. data/tests/s5/s5profiling.md +0 -48
  243. data/tests/unittest/bug_def.md +0 -28
  244. data/tests/unittest/email.md +0 -32
  245. data/tests/unittest/html2.md +0 -34
  246. data/tests/unittest/ie.md +0 -61
  247. data/tests/unittest/links2.md +0 -34
  248. data/tests/unittest/lists11.md +0 -28
  249. data/tests/unittest/lists6.md +0 -53
  250. data/tests/unittest/lists9.md +0 -76
  251. data/tests/unittest/math/equations.md +0 -86
  252. data/tests/unittest/math/math2.md +0 -57
  253. data/tests/unittest/math/table.md +0 -37
  254. data/tests/unittest/notyet/header_after_par.md +0 -70
  255. data/tests/unittest/red_tests/abbrev.md +0 -1388
  256. data/tests/unittest/red_tests/lists7.md +0 -68
  257. data/tests/unittest/red_tests/lists7b.md +0 -128
  258. data/tests/unittest/red_tests/lists8.md +0 -76
  259. data/tests/unittest/red_tests/xml.md +0 -70
  260. data/tests/unittest/xml3.md +0 -38
  261. data/tests/utf8-files/simple.md +0 -1
  262. data/unit_test_block.sh +0 -5
  263. data/unit_test_span.sh +0 -3
@@ -1,64 +0,0 @@
1
- #--
2
- # Copyright (C) 2006 Andrea Censi <andrea (at) rubyforge.org>
3
- #
4
- # This file is part of Maruku.
5
- #
6
- # Maruku is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation; either version 2 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Maruku is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Maruku; if not, write to the Free Software
18
- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
- #++
20
-
21
-
22
-
23
- class String
24
-
25
- # These are TeX's special characters
26
- LATEX_ADD_SLASH = [ ?{, ?}, ?$, ?&, ?#, ?_, ?%]
27
-
28
- # These, we transform to {\tt \char<ascii code>}
29
- LATEX_TO_CHARCODE = [ ?^, ?~, ?>,?<]
30
-
31
- def escape_to_latex(s)
32
- s2 = ""
33
- s.each_byte do |b|
34
- if LATEX_TO_CHARCODE.include? b
35
- s2 += "{\\tt \\char#{b}}"
36
- elsif LATEX_ADD_SLASH.include? b
37
- s2 << ?\\ << b
38
- elsif b == ?\\
39
- # there is no backslash in cmr10 fonts
40
- s2 += "$\\backslash$"
41
- else
42
- s2 << b
43
- end
44
- end
45
- s2
46
- end
47
-
48
- # escapes special characters
49
- def to_latex
50
- s = escape_to_latex(self)
51
- OtherGoodies.each do |k, v|
52
- s.gsub!(k, v)
53
- end
54
- s
55
- end
56
-
57
- # other things that are good on the eyes
58
- OtherGoodies = {
59
- /(\s)LaTeX/ => '\1\\LaTeX\\xspace ', # XXX not if already \LaTeX
60
- # 'HTML' => '\\textsc{html}\\xspace ',
61
- # 'PDF' => '\\textsc{pdf}\\xspace '
62
- }
63
-
64
- end
@@ -1,167 +0,0 @@
1
- #--
2
- # Copyright (C) 2006 Andrea Censi <andrea (at) rubyforge.org>
3
- #
4
- # This file is part of Maruku.
5
- #
6
- # Maruku is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation; either version 2 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Maruku is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Maruku; if not, write to the Free Software
18
- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
- #++
20
-
21
-
22
-
23
- class Module
24
- def safe_attr_accessor1(symbol, klass)
25
- attr_reader symbol
26
- code = <<-EOF
27
- def #{symbol}=(val)
28
- if not val.kind_of? #{klass}
29
- s = "\nCould not assign an object of type \#{val.class} to #{symbol}.\n\n"
30
- s += "Tried to assign object of class \#{val.class}:\n"+
31
- "\#{val.inspect}\n"+
32
- "to \#{self.class}::#{symbol} constrained to be of class #{klass}.\n"
33
- raise s
34
- end
35
- @#{symbol} = val
36
- end
37
-
38
- EOF
39
- module_eval code
40
- end
41
-
42
- def safe_attr_accessor2(symbol, klass)
43
- attr_accessor symbol
44
- end
45
-
46
- alias safe_attr_accessor safe_attr_accessor2
47
- end
48
-
49
- module MaRuKu
50
-
51
- # I did not want to have a class for each possible element.
52
- # Instead I opted to have only the class "MDElement"
53
- # that represents eveything in the document (paragraphs, headers, etc).
54
- #
55
- # You can tell what it is by the variable `node_type`.
56
- #
57
- # In the instance-variable `children` there are the children. These
58
- # can be of class 1) String or 2) MDElement.
59
- #
60
- # The @doc variable points to the document to which the MDElement
61
- # belongs (which is an instance of Maruku, subclass of MDElement).
62
- #
63
- # Attributes are contained in the hash `attributes`.
64
- # Keys are symbols (downcased, with spaces substituted by underscores)
65
- #
66
- # For example, if you write in the source document.
67
- #
68
- # Title: test document
69
- # My property: value
70
- #
71
- # content content
72
- #
73
- # You can access `value` by writing:
74
- #
75
- # @doc.attributes[:my_property] # => 'value'
76
- #
77
- # from whichever MDElement in the hierarchy.
78
- #
79
- class MDElement
80
- # See helpers.rb for the list of allowed #node_type values
81
- safe_attr_accessor :node_type, Symbol
82
-
83
- # Children are either Strings or MDElement
84
- safe_attr_accessor :children, Array
85
-
86
- # An attribute list, may not be nil
87
- safe_attr_accessor :al, Array #Maruku::AttributeList
88
-
89
- # These are the processed attributes
90
- safe_attr_accessor :attributes, Hash
91
-
92
- # Reference of the document (which is of class Maruku)
93
- attr_accessor :doc
94
-
95
- def initialize(node_type=:unset, children=[], meta={},
96
- al=MaRuKu::AttributeList.new )
97
- super();
98
- self.children = children
99
- self.node_type = node_type
100
-
101
- @attributes = {}
102
-
103
- meta.each do |symbol, value|
104
- self.instance_eval "
105
- def #{symbol}; @#{symbol}; end
106
- def #{symbol}=(val); @#{symbol}=val; end"
107
- self.send "#{symbol}=", value
108
- end
109
-
110
- self.al = al || AttributeList.new
111
-
112
- self.meta_priv = meta
113
- end
114
-
115
- attr_accessor :meta_priv
116
-
117
- def ==(o)
118
- ok = o.kind_of?(MDElement) &&
119
- (self.node_type == o.node_type) &&
120
- (self.meta_priv == o.meta_priv) &&
121
- (self.children == o.children)
122
-
123
- if not ok
124
- # puts "This:\n"+self.inspect+"\nis different from\n"+o.inspect+"\n\n"
125
- end
126
- ok
127
- end
128
- end
129
-
130
- # This represents the whole document and holds global data.
131
-
132
- class MDDocument
133
-
134
- safe_attr_accessor :refs, Hash
135
- safe_attr_accessor :footnotes, Hash
136
-
137
- # This is an hash. The key might be nil.
138
- safe_attr_accessor :abbreviations, Hash
139
-
140
- # Attribute lists definition
141
- safe_attr_accessor :ald, Hash
142
-
143
- # The order in which footnotes are used. Contains the id.
144
- safe_attr_accessor :footnotes_order, Array
145
-
146
- safe_attr_accessor :latex_required_packages, Array
147
-
148
- safe_attr_accessor :refid2ref, Hash
149
-
150
- def initialize(s=nil)
151
- super(:document)
152
- @doc = self
153
-
154
- self.refs = {}
155
- self.footnotes = {}
156
- self.footnotes_order = []
157
- self.abbreviations = {}
158
- self.ald = {}
159
- self.latex_required_packages = []
160
-
161
- parse_doc(s) if s
162
- end
163
- end
164
-
165
-
166
- end # MaRuKu
167
-
@@ -1,87 +0,0 @@
1
- #--
2
- # Copyright (C) 2006 Andrea Censi <andrea (at) rubyforge.org>
3
- #
4
- # This file is part of Maruku.
5
- #
6
- # Maruku is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation; either version 2 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Maruku is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Maruku; if not, write to the Free Software
18
- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
- #++
20
-
21
-
22
-
23
- class String
24
- def inspect_more(a=nil,b=nil)
25
- inspect
26
- end
27
- end
28
-
29
- class Object
30
- def inspect_more(a=nil,b=nil)
31
- inspect
32
- end
33
- end
34
-
35
- class Array
36
- def inspect_more(compact, join_string, add_brackets=true)
37
- s = map {|x|
38
- x.kind_of?(String) ? x.inspect :
39
- x.kind_of?(MaRuKu::MDElement) ? x.inspect(compact) :
40
- (raise "WTF #{x.class} #{x.inspect}")
41
- }.join(join_string)
42
-
43
- add_brackets ? "[#{s}]" : s
44
- end
45
- end
46
-
47
- class Hash
48
- def inspect_ordered(a=nil,b=nil)
49
- "{"+keys.map{|x|x.to_s}.sort.map{|x|x.to_sym}.
50
- map{|k| k.inspect + "=>"+self[k].inspect}.join(',')+"}"
51
- end
52
- end
53
-
54
- module MaRuKu
55
- class MDElement
56
- def inspect(compact=true)
57
- if compact
58
- i2 = inspect2
59
- return i2 if i2
60
- end
61
-
62
- "md_el(:%s,%s,%s,%s)" %
63
- [
64
- self.node_type,
65
- children_inspect(compact),
66
- @meta_priv.inspect_ordered,
67
- self.al.inspect
68
- ]
69
- end
70
-
71
- def children_inspect(compact=true)
72
- s = @children.inspect_more(compact,', ')
73
- if @children.empty?
74
- "[]"
75
- elsif s.size < 70
76
- s
77
- else
78
- "[\n"+
79
- add_tabs(@children.inspect_more(compact,",\n",false))+
80
- "\n]"
81
- end
82
- end
83
-
84
- end
85
-
86
- end
87
-
@@ -1,61 +0,0 @@
1
- #--
2
- # Copyright (C) 2006 Andrea Censi <andrea (at) rubyforge.org>
3
- #
4
- # This file is part of Maruku.
5
- #
6
- # Maruku is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation; either version 2 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Maruku is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Maruku; if not, write to the Free Software
18
- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
- #++
20
-
21
-
22
- module MaRuKu
23
-
24
- class MDElement
25
-
26
- # Yields to each element of specified node_type
27
- # All elements if e_node_type is nil.
28
- def each_element(e_node_type=nil, &block)
29
- @children.each do |c|
30
- if c.kind_of? MDElement
31
- if (not e_node_type) || (e_node_type == c.node_type)
32
- block.call c
33
- end
34
- c.each_element(e_node_type, &block)
35
- end
36
- end
37
- end
38
-
39
- # Apply passed block to each String in the hierarchy.
40
- def replace_each_string(&block)
41
- for c in @children
42
- if c.kind_of? MDElement
43
- c.replace_each_string(&block)
44
- end
45
- end
46
-
47
- processed = []
48
- until @children.empty?
49
- c = @children.shift
50
- if c.kind_of? String
51
- result = block.call(c)
52
- [*result].each do |e| processed << e end
53
- else
54
- processed << c
55
- end
56
- end
57
- @children = processed
58
- end
59
-
60
- end
61
- end
@@ -1,82 +0,0 @@
1
- #--
2
- # Copyright (C) 2006 Andrea Censi <andrea (at) rubyforge.org>
3
- #
4
- # This file is part of Maruku.
5
- #
6
- # Maruku is free software; you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation; either version 2 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Maruku is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Maruku; if not, write to the Free Software
18
- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
- #++
20
-
21
-
22
- require 'maruku'
23
- #require 'bluecloth'
24
-
25
-
26
- data = $stdin.read
27
-
28
- num = 10
29
-
30
- if ARGV.size > 0 && ((n=ARGV[0].to_i) != 0)
31
- num = n
32
- end
33
-
34
- methods =
35
- [
36
-
37
- [Maruku, :to_html],
38
- # [BlueCloth, :to_html],
39
- [Maruku, :to_latex]
40
-
41
- ]
42
-
43
- #methods = [[Maruku, :class]]
44
- #num = 10
45
-
46
- stats =
47
- methods .map do |c, method|
48
- puts "Computing for #{c}"
49
-
50
- start = Time.now
51
- doc = nil
52
- for i in 1..num
53
- $stdout.write "#{i} "; $stdout.flush
54
- doc = c.new(data)
55
- end
56
- stop = Time.now
57
- parsing = (stop-start)/num
58
-
59
- start = Time.now
60
- for i in 1..num
61
- $stdout.write "#{i} "; $stdout.flush
62
- s = doc.send method
63
- end
64
- stop = Time.now
65
- rendering = (stop-start)/num
66
-
67
- puts ("%s (%s): parsing %0.2f sec + rendering %0.2f sec "+
68
- "= %0.2f sec ") % [c, method, parsing,rendering,parsing+rendering]
69
-
70
- [c, method, parsing, rendering]
71
- end
72
-
73
- puts "\n\n\n"
74
- stats.each do |x| x.push(x[2]+x[3]) end
75
- max = stats.map{|x|x[4]}.max
76
- stats.sort! { |x,y| x[4] <=> y[4] } . reverse!
77
- for c, method, parsing, rendering, tot in stats
78
- puts ("%20s: parsing %0.2f sec + rendering %0.2f sec "+
79
- "= %0.2f sec (%0.2fx)") %
80
- ["#{c} (#{method})", parsing,rendering,tot,max/tot]
81
- end
82
-