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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/MIT-LICENSE.txt +20 -0
- data/bin/maruku +153 -152
- data/bin/marutex +2 -29
- data/data/entities.xml +261 -0
- data/docs/math.md +14 -18
- data/lib/maruku.rb +65 -77
- data/lib/maruku/attributes.rb +109 -214
- data/lib/maruku/defaults.rb +45 -67
- data/lib/maruku/document.rb +43 -0
- data/lib/maruku/element.rb +112 -0
- data/lib/maruku/errors.rb +71 -0
- data/lib/maruku/ext/div.rb +105 -113
- data/lib/maruku/ext/fenced_code.rb +97 -0
- data/lib/maruku/ext/math.rb +22 -26
- data/lib/maruku/ext/math/elements.rb +20 -26
- data/lib/maruku/ext/math/mathml_engines/blahtex.rb +92 -104
- data/lib/maruku/ext/math/mathml_engines/itex2mml.rb +33 -26
- data/lib/maruku/ext/math/mathml_engines/none.rb +11 -19
- data/lib/maruku/ext/math/mathml_engines/ritex.rb +2 -4
- data/lib/maruku/ext/math/parsing.rb +107 -113
- data/lib/maruku/ext/math/to_html.rb +184 -187
- data/lib/maruku/ext/math/to_latex.rb +30 -21
- data/lib/maruku/helpers.rb +158 -257
- data/lib/maruku/html.rb +254 -0
- data/lib/maruku/input/charsource.rb +272 -319
- data/lib/maruku/input/extensions.rb +62 -63
- data/lib/maruku/input/html_helper.rb +220 -189
- data/lib/maruku/input/linesource.rb +90 -110
- data/lib/maruku/input/mdline.rb +129 -0
- data/lib/maruku/input/parse_block.rb +618 -612
- data/lib/maruku/input/parse_doc.rb +145 -215
- data/lib/maruku/input/parse_span.rb +658 -0
- data/lib/maruku/input/rubypants.rb +200 -128
- data/lib/maruku/inspect_element.rb +60 -0
- data/lib/maruku/maruku.rb +10 -31
- data/lib/maruku/output/entity_table.rb +33 -0
- data/lib/maruku/output/s5/fancy.rb +462 -462
- data/lib/maruku/output/s5/to_s5.rb +115 -135
- data/lib/maruku/output/to_html.rb +898 -983
- data/lib/maruku/output/to_latex.rb +561 -560
- data/lib/maruku/output/to_markdown.rb +207 -162
- data/lib/maruku/output/to_s.rb +11 -52
- data/lib/maruku/string_utils.rb +129 -179
- data/lib/maruku/toc.rb +185 -196
- data/lib/maruku/version.rb +33 -38
- data/spec/block_docs/abbrev.md +776 -0
- data/{tests/unittest → spec/block_docs}/abbreviations.md +11 -20
- data/{tests/unittest → spec/block_docs}/alt.md +2 -14
- data/{tests/unittest/pending → spec/block_docs}/amps.md +1 -13
- data/{tests/unittest → spec/block_docs}/attributes/att2.md +0 -12
- data/{tests/unittest → spec/block_docs}/attributes/att3.md +2 -14
- data/{tests/unittest → spec/block_docs}/attributes/attributes.md +12 -16
- data/{tests/unittest → spec/block_docs}/attributes/circular.md +0 -12
- data/{tests/unittest → spec/block_docs}/attributes/default.md +1 -13
- data/{tests/unittest → spec/block_docs}/blank.md +0 -12
- data/{tests/unittest → spec/block_docs}/blanks_in_code.md +16 -15
- data/{tests/unittest/loss.md → spec/block_docs/bug_def.md} +6 -18
- data/{tests/unittest → spec/block_docs}/bug_table.md +3 -15
- data/{tests/unittest → spec/block_docs}/code.md +7 -14
- data/{tests/unittest → spec/block_docs}/code2.md +4 -14
- data/{tests/unittest → spec/block_docs}/code3.md +12 -16
- data/{tests/unittest → spec/block_docs}/data_loss.md +2 -14
- data/{tests/unittest → spec/block_docs}/divs/div1.md +0 -12
- data/{tests/unittest → spec/block_docs}/divs/div2.md +0 -12
- data/{tests/unittest → spec/block_docs}/divs/div3_nest.md +3 -15
- data/{tests/unittest → spec/block_docs}/easy.md +1 -13
- data/spec/block_docs/email.md +29 -0
- data/{tests/unittest/pending → spec/block_docs}/empty_cells.md +3 -15
- data/{tests/unittest → spec/block_docs}/encoding/iso-8859-1.md +1 -14
- data/{tests/unittest → spec/block_docs}/encoding/utf-8.md +0 -12
- data/{tests/unittest → spec/block_docs}/entities.md +27 -29
- data/{tests/unittest/notyet → spec/block_docs}/escape.md +2 -14
- data/{tests/unittest → spec/block_docs}/escaping.md +11 -22
- data/{tests/unittest → spec/block_docs}/extra_dl.md +2 -13
- data/{tests/unittest → spec/block_docs}/extra_header_id.md +14 -20
- data/{tests/unittest → spec/block_docs}/extra_table1.md +3 -15
- data/spec/block_docs/fenced_code_blocks.md +66 -0
- data/spec/block_docs/fenced_code_blocks_highlighted.md +18 -0
- data/{tests/unittest → spec/block_docs}/footnotes.md +12 -24
- data/spec/block_docs/footnotes2.md +78 -0
- data/spec/block_docs/hard.md +25 -0
- data/spec/block_docs/header_after_par.md +62 -0
- data/{tests/unittest → spec/block_docs}/headers.md +10 -18
- data/{tests/unittest → spec/block_docs}/hex_entities.md +7 -18
- data/{tests/unittest → spec/block_docs}/hrule.md +5 -12
- data/{tests/unittest → spec/block_docs}/html3.md +1 -13
- data/{tests/unittest → spec/block_docs}/html4.md +2 -14
- data/{tests/unittest → spec/block_docs}/html5.md +2 -14
- data/spec/block_docs/html_block_in_para.md +22 -0
- data/spec/block_docs/html_inline.md +25 -0
- data/spec/block_docs/html_trailing.md +31 -0
- data/spec/block_docs/ie.md +62 -0
- data/spec/block_docs/iframe.md +29 -0
- data/{tests/unittest → spec/block_docs}/images.md +22 -28
- data/{tests/unittest → spec/block_docs}/images2.md +7 -17
- data/{tests/unittest → spec/block_docs}/inline_html.md +37 -67
- data/{tests/unittest → spec/block_docs}/inline_html2.md +1 -13
- data/spec/block_docs/inline_html_beginning.md +10 -0
- data/spec/block_docs/issue20.md +9 -0
- data/spec/block_docs/issue26.md +22 -0
- data/spec/block_docs/issue29.md +9 -0
- data/spec/block_docs/issue30.md +30 -0
- data/spec/block_docs/issue31.md +25 -0
- data/spec/block_docs/issue40.md +40 -0
- data/spec/block_docs/issue64.md +55 -0
- data/spec/block_docs/issue67.md +19 -0
- data/spec/block_docs/issue70.md +11 -0
- data/spec/block_docs/issue72.md +17 -0
- data/spec/block_docs/issue74.md +38 -0
- data/spec/block_docs/issue79.md +15 -0
- data/spec/block_docs/issue83.md +13 -0
- data/spec/block_docs/issue85.md +25 -0
- data/spec/block_docs/issue88.md +19 -0
- data/spec/block_docs/issue89.md +12 -0
- data/spec/block_docs/issue90.md +38 -0
- data/{tests/unittest/pending → spec/block_docs}/link.md +21 -18
- data/{tests/unittest → spec/block_docs}/links.md +33 -32
- data/spec/block_docs/links2.md +21 -0
- data/{tests/unittest → spec/block_docs}/list1.md +0 -12
- data/{tests/unittest → spec/block_docs}/list12.md +2 -14
- data/{tests/unittest → spec/block_docs}/list2.md +2 -14
- data/spec/block_docs/list_multipara.md +42 -0
- data/{tests/unittest → spec/block_docs}/lists.md +28 -29
- data/{tests/unittest → spec/block_docs}/lists10.md +2 -14
- data/spec/block_docs/lists11.md +23 -0
- data/spec/block_docs/lists12.md +43 -0
- data/spec/block_docs/lists13.md +55 -0
- data/spec/block_docs/lists14.md +61 -0
- data/spec/block_docs/lists15.md +36 -0
- data/spec/block_docs/lists6.md +88 -0
- data/spec/block_docs/lists7b.md +58 -0
- data/spec/block_docs/lists9.md +53 -0
- data/{tests/unittest → spec/block_docs}/lists_after_paragraph.md +19 -25
- data/spec/block_docs/lists_blank.md +35 -0
- data/{tests/unittest/list3.md → spec/block_docs/lists_blockquote_code.md} +2 -14
- data/{tests/unittest/list4.md → spec/block_docs/lists_need_blank_line.md} +50 -21
- data/spec/block_docs/lists_nested.md +44 -0
- data/spec/block_docs/lists_nested_blankline.md +28 -0
- data/spec/block_docs/lists_nested_deep.md +43 -0
- data/{tests/unittest → spec/block_docs}/lists_ol.md +37 -54
- data/spec/block_docs/lists_paraindent.md +47 -0
- data/spec/block_docs/lists_tab.md +54 -0
- data/spec/block_docs/loss.md +17 -0
- data/spec/block_docs/math-blahtex/equations.md +30 -0
- data/spec/block_docs/math-blahtex/inline.md +48 -0
- data/spec/block_docs/math-blahtex/math2.md +45 -0
- data/spec/block_docs/math-blahtex/table.md +25 -0
- data/spec/block_docs/math/embedded_invalid_svg.md +79 -0
- data/spec/block_docs/math/embedded_svg.md +97 -0
- data/spec/block_docs/math/equations.md +44 -0
- data/{tests/unittest → spec/block_docs}/math/inline.md +7 -19
- data/spec/block_docs/math/math2.md +45 -0
- data/{tests/unittest → spec/block_docs}/math/notmath.md +0 -12
- data/spec/block_docs/math/raw_mathml.md +87 -0
- data/spec/block_docs/math/table.md +25 -0
- data/{tests/unittest → spec/block_docs}/math/table2.md +5 -17
- data/{tests/unittest → spec/block_docs}/misc_sw.md +181 -118
- data/{tests/unittest → spec/block_docs}/olist.md +6 -18
- data/{tests/unittest → spec/block_docs}/one.md +0 -12
- data/{tests/unittest → spec/block_docs}/paragraph.md +0 -12
- data/{tests/unittest → spec/block_docs}/paragraph_rules/dont_merge_ref.md +4 -12
- data/{tests/unittest → spec/block_docs}/paragraph_rules/tab_is_blank.md +0 -12
- data/{tests/unittest → spec/block_docs}/paragraphs.md +1 -13
- data/{tests/unittest → spec/block_docs}/recover/recover_links.md +4 -16
- data/{tests/unittest/pending/ref.md → spec/block_docs/ref_with_period.md} +7 -16
- data/spec/block_docs/ref_with_title.md +22 -0
- data/{tests/unittest → spec/block_docs}/references/long_example.md +16 -23
- data/{tests/unittest → spec/block_docs}/references/spaces_and_numbers.md +0 -12
- data/{tests/unittest → spec/block_docs}/smartypants.md +24 -31
- data/{tests/unittest → spec/block_docs}/syntax_hl.md +13 -17
- data/{tests/unittest → spec/block_docs}/table_attributes.md +2 -14
- data/spec/block_docs/tables.md +58 -0
- data/{tests/unittest → spec/block_docs}/test.md +1 -13
- data/{tests/unittest/notyet → spec/block_docs}/ticks.md +1 -13
- data/spec/block_docs/toc.md +87 -0
- data/{tests/unittest/notyet → spec/block_docs}/triggering.md +14 -25
- data/{tests/unittest → spec/block_docs}/underscore_in_words.md +0 -12
- data/{tests/unittest → spec/block_docs}/wrapping.md +4 -16
- data/spec/block_docs/xml.md +33 -0
- data/{tests/unittest → spec/block_docs}/xml2.md +0 -12
- data/spec/block_docs/xml3.md +24 -0
- data/{tests/unittest → spec/block_docs}/xml_instruction.md +9 -20
- data/spec/block_spec.rb +110 -0
- data/spec/cli_spec.rb +8 -0
- data/spec/span_spec.rb +256 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/to_html_utf8_spec.rb +13 -0
- metadata +205 -243
- metadata.gz.sig +3 -0
- data/Rakefile +0 -48
- data/bin/marudown +0 -29
- data/bin/marutest +0 -345
- data/docs/changelog.md +0 -334
- data/lib/maruku/errors_management.rb +0 -92
- data/lib/maruku/ext/math/latex_fix.rb +0 -12
- data/lib/maruku/input/parse_span_better.rb +0 -746
- data/lib/maruku/input/type_detection.rb +0 -147
- data/lib/maruku/output/to_latex_entities.rb +0 -367
- data/lib/maruku/output/to_latex_strings.rb +0 -64
- data/lib/maruku/structures.rb +0 -167
- data/lib/maruku/structures_inspect.rb +0 -87
- data/lib/maruku/structures_iterators.rb +0 -61
- data/lib/maruku/tests/benchmark.rb +0 -82
- data/lib/maruku/tests/new_parser.rb +0 -373
- data/lib/maruku/tests/tests.rb +0 -136
- data/lib/maruku/usage/example1.rb +0 -33
- data/tests/bugs/code_in_links.md +0 -101
- data/tests/bugs/complex_escaping.md +0 -38
- data/tests/math/syntax.md +0 -46
- data/tests/math_usage/document.md +0 -13
- data/tests/others/abbreviations.md +0 -11
- data/tests/others/blank.md +0 -4
- data/tests/others/code.md +0 -5
- data/tests/others/code2.md +0 -8
- data/tests/others/code3.md +0 -16
- data/tests/others/email.md +0 -4
- data/tests/others/entities.md +0 -19
- data/tests/others/escaping.md +0 -16
- data/tests/others/extra_dl.md +0 -101
- data/tests/others/extra_header_id.md +0 -13
- data/tests/others/extra_table1.md +0 -40
- data/tests/others/footnotes.md +0 -17
- data/tests/others/headers.md +0 -10
- data/tests/others/hrule.md +0 -10
- data/tests/others/images.md +0 -20
- data/tests/others/inline_html.md +0 -42
- data/tests/others/links.md +0 -38
- data/tests/others/list1.md +0 -4
- data/tests/others/list2.md +0 -5
- data/tests/others/list3.md +0 -8
- data/tests/others/lists.md +0 -32
- data/tests/others/lists_after_paragraph.md +0 -44
- data/tests/others/lists_ol.md +0 -39
- data/tests/others/misc_sw.md +0 -105
- data/tests/others/one.md +0 -1
- data/tests/others/paragraphs.md +0 -13
- data/tests/others/sss06.md +0 -352
- data/tests/others/test.md +0 -4
- data/tests/s5/s5profiling.md +0 -48
- data/tests/unittest/bug_def.md +0 -28
- data/tests/unittest/email.md +0 -32
- data/tests/unittest/html2.md +0 -34
- data/tests/unittest/ie.md +0 -61
- data/tests/unittest/links2.md +0 -34
- data/tests/unittest/lists11.md +0 -28
- data/tests/unittest/lists6.md +0 -53
- data/tests/unittest/lists9.md +0 -76
- data/tests/unittest/math/equations.md +0 -86
- data/tests/unittest/math/math2.md +0 -57
- data/tests/unittest/math/table.md +0 -37
- data/tests/unittest/notyet/header_after_par.md +0 -70
- data/tests/unittest/red_tests/abbrev.md +0 -1388
- data/tests/unittest/red_tests/lists7.md +0 -68
- data/tests/unittest/red_tests/lists7b.md +0 -128
- data/tests/unittest/red_tests/lists8.md +0 -76
- data/tests/unittest/red_tests/xml.md +0 -70
- data/tests/unittest/xml3.md +0 -38
- data/tests/utf8-files/simple.md +0 -1
- data/unit_test_block.sh +0 -5
- 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
|
data/lib/maruku/structures.rb
DELETED
@@ -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
|
-
|