maruku 0.6.1 → 0.7.0.beta1

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