maruku 0.2.13 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/maruku +23 -15
- data/bin/maruku0.3 +37 -0
- data/bin/marutest +277 -0
- data/docs/changelog-0.3.html +99 -0
- data/docs/changelog-0.3.md +84 -0
- data/docs/faq.html +46 -0
- data/docs/faq.md +32 -0
- data/docs/index.html +629 -64
- data/docs/markdown_extra2.html +67 -14
- data/docs/markdown_syntax.html +631 -94
- data/docs/markdown_syntax_2.html +152 -0
- data/docs/maruku.html +629 -64
- data/docs/maruku.md +108 -105
- data/docs/proposal.html +362 -55
- data/docs/proposal.md +133 -169
- data/docs/todo.html +30 -0
- data/lib/maruku.rb +13 -3
- data/lib/maruku/errors_management.rb +75 -0
- data/lib/maruku/helpers.rb +164 -0
- data/lib/maruku/html_helper.rb +33 -13
- data/lib/maruku/parse_block.rb +89 -92
- data/lib/maruku/parse_doc.rb +43 -18
- data/lib/maruku/parse_span.rb +17 -46
- data/lib/maruku/parse_span_better.rb +681 -0
- data/lib/maruku/string_utils.rb +17 -10
- data/lib/maruku/structures.rb +62 -35
- data/lib/maruku/structures_iterators.rb +39 -0
- data/lib/maruku/tests/benchmark.rb +12 -4
- data/lib/maruku/tests/new_parser.rb +318 -0
- data/lib/maruku/to_html.rb +113 -44
- data/lib/maruku/to_latex.rb +32 -14
- data/lib/maruku/to_markdown.rb +110 -0
- data/lib/maruku/toc.rb +35 -1
- data/lib/maruku/version.rb +10 -1
- data/lib/test.rb +29 -0
- data/tests/others/escaping.md +6 -4
- data/tests/others/links.md +1 -1
- data/tests/others/lists_after_paragraph.md +44 -0
- data/tests/unittest/abbreviations.md +71 -0
- data/tests/unittest/blank.md +43 -0
- data/tests/unittest/blanks_in_code.md +131 -0
- data/tests/unittest/code.md +64 -0
- data/tests/unittest/code2.md +59 -0
- data/tests/unittest/code3.md +121 -0
- data/tests/unittest/easy.md +36 -0
- data/tests/unittest/email.md +39 -0
- data/tests/unittest/encoding/iso-8859-1.md +9 -0
- data/tests/unittest/encoding/utf-8.md +38 -0
- data/tests/unittest/entities.md +174 -0
- data/tests/unittest/escaping.md +97 -0
- data/tests/unittest/extra_dl.md +81 -0
- data/tests/unittest/extra_header_id.md +96 -0
- data/tests/unittest/extra_table1.md +78 -0
- data/tests/unittest/footnotes.md +120 -0
- data/tests/unittest/headers.md +64 -0
- data/tests/unittest/hrule.md +77 -0
- data/tests/unittest/images.md +114 -0
- data/tests/unittest/inline_html.md +185 -0
- data/tests/unittest/links.md +162 -0
- data/tests/unittest/list1.md +80 -0
- data/tests/unittest/list2.md +75 -0
- data/tests/unittest/list3.md +111 -0
- data/tests/unittest/list4.md +43 -0
- data/tests/unittest/lists.md +262 -0
- data/tests/unittest/lists_after_paragraph.md +280 -0
- data/tests/unittest/lists_ol.md +323 -0
- data/tests/unittest/misc_sw.md +751 -0
- data/tests/unittest/notyet/escape.md +46 -0
- data/tests/unittest/notyet/header_after_par.md +85 -0
- data/tests/unittest/notyet/ticks.md +67 -0
- data/tests/unittest/notyet/triggering.md +210 -0
- data/tests/unittest/one.md +33 -0
- data/tests/unittest/paragraph.md +34 -0
- data/tests/unittest/paragraph_rules/dont_merge_ref.md +60 -0
- data/tests/unittest/paragraph_rules/tab_is_blank.md +43 -0
- data/tests/unittest/paragraphs.md +84 -0
- data/tests/unittest/recover/recover_links.md +32 -0
- data/tests/unittest/references/long_example.md +87 -0
- data/tests/unittest/references/spaces_and_numbers.md +27 -0
- data/tests/unittest/syntax_hl.md +99 -0
- data/tests/unittest/test.md +36 -0
- data/tests/unittest/wrapping.md +88 -0
- data/tests/utf8-files/simple.md +1 -0
- metadata +139 -86
- data/lib/maruku/maruku.rb +0 -50
- data/tests/a.md +0 -10
data/lib/maruku/toc.rb
CHANGED
@@ -18,6 +18,40 @@
|
|
18
18
|
|
19
19
|
require 'rexml/document'
|
20
20
|
|
21
|
+
|
22
|
+
class Maruku
|
23
|
+
# an instance of Section (see below)
|
24
|
+
attr_accessor :toc
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
class MDElement
|
30
|
+
# This represents a section in the TOC.
|
31
|
+
class Section
|
32
|
+
# a Fixnum, is == header_element.meta[:level]
|
33
|
+
attr_accessor :section_level
|
34
|
+
|
35
|
+
# An array of fixnum, like [1,2,5] for Section 1.2.5
|
36
|
+
attr_accessor :section_number
|
37
|
+
|
38
|
+
# reference to header (header has h.meta[:section] to self)
|
39
|
+
attr_accessor :header_element
|
40
|
+
|
41
|
+
# Array of immediate children of this element
|
42
|
+
attr_accessor :immediate_children
|
43
|
+
# Array of Section inside this section
|
44
|
+
attr_accessor :section_children
|
45
|
+
|
46
|
+
|
47
|
+
def initialize
|
48
|
+
@immediate_children = []
|
49
|
+
@section_children = []
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
|
21
55
|
class MDElement
|
22
56
|
class Section
|
23
57
|
def inspect(indent=1)
|
@@ -134,7 +168,7 @@ class MDElement
|
|
134
168
|
s2 = Section.new
|
135
169
|
s2.section_level = level
|
136
170
|
s2.header_element = header
|
137
|
-
header.
|
171
|
+
header.instance_variable_set :@section, s2
|
138
172
|
|
139
173
|
stack.last.section_children.push s2
|
140
174
|
stack.push s2
|
data/lib/maruku/version.rb
CHANGED
@@ -17,7 +17,16 @@
|
|
17
17
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
18
18
|
|
19
19
|
class Maruku
|
20
|
-
Version = '0.
|
20
|
+
Version = '0.3.0'
|
21
21
|
|
22
22
|
MarukuURL = 'http://maruku.rubyforge.org/'
|
23
|
+
|
24
|
+
# If true, use also PHP Markdown extra syntax
|
25
|
+
#
|
26
|
+
# Note: it is not guaranteed that if it's false
|
27
|
+
# then no special features will be used.
|
28
|
+
def markdown_extra?
|
29
|
+
true
|
30
|
+
end
|
31
|
+
|
23
32
|
end
|
data/lib/test.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
n=100
|
3
|
+
$buffer = "blah "*n+"boh"+"beh"*n
|
4
|
+
$index = n*5
|
5
|
+
|
6
|
+
def fun1(reg)
|
7
|
+
r2 = /^.{#{$index}}#{reg}/
|
8
|
+
r2.match($buffer)
|
9
|
+
end
|
10
|
+
|
11
|
+
def fun2(reg)
|
12
|
+
reg.match($buffer[$index, $buffer.size-$index])
|
13
|
+
end
|
14
|
+
|
15
|
+
r = /\w*/
|
16
|
+
a = Time.now
|
17
|
+
1000.times do
|
18
|
+
fun1(r)
|
19
|
+
end
|
20
|
+
|
21
|
+
b = Time.now
|
22
|
+
1000.times do
|
23
|
+
fun2(r)
|
24
|
+
end
|
25
|
+
|
26
|
+
c = Time.now
|
27
|
+
|
28
|
+
puts "fun1: #{b-a} sec"
|
29
|
+
puts "fun2: #{c-b} sec"
|
data/tests/others/escaping.md
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
-
Hello: ! \! \` \{ \} \[ \] \( \) \# \. \! * \*
|
1
|
+
Hello: ! \! \` \{ \} \[ \] \( \) \# \. \! * \*
|
2
2
|
|
3
3
|
|
4
4
|
Ora, *emphasis*, **bold**, * <- due asterischi-> * , un underscore-> _ , _emphasis_,
|
5
5
|
incre*dible*e!
|
6
6
|
|
7
7
|
|
8
|
-
This is
|
8
|
+
This is ``Code with an escape: -> ` <- `` (after)
|
9
9
|
|
10
|
-
This is
|
10
|
+
This is ```Code with a special: -> ` <- ```(after)
|
11
11
|
|
12
12
|
`Start ` of paragraph
|
13
13
|
|
14
|
-
End of `paragraph `
|
14
|
+
End of `paragraph `
|
15
|
+
|
16
|
+
Exactly one space: ` ` and also here: `` ``
|
data/tests/others/links.md
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
Paragraph, list with no space:
|
2
|
+
* ciao
|
3
|
+
|
4
|
+
Paragraph, list with 1 space:
|
5
|
+
* ciao
|
6
|
+
|
7
|
+
Paragraph, list with 3 space:
|
8
|
+
* ciao
|
9
|
+
|
10
|
+
Paragraph, list with 4 spaces:
|
11
|
+
* ciao
|
12
|
+
|
13
|
+
Paragraph, list with 1 tab:
|
14
|
+
* ciao
|
15
|
+
|
16
|
+
Paragraph (1 space after), list with no space:
|
17
|
+
* ciao
|
18
|
+
|
19
|
+
Paragraph (2 spaces after), list with no space:
|
20
|
+
* ciao
|
21
|
+
|
22
|
+
Paragraph (3 spaces after), list with no space:
|
23
|
+
* ciao
|
24
|
+
|
25
|
+
Paragraph with block quote:
|
26
|
+
> Quoted
|
27
|
+
|
28
|
+
Paragraph with header:
|
29
|
+
### header ###
|
30
|
+
|
31
|
+
Paragraph with header on two lines:
|
32
|
+
header
|
33
|
+
------
|
34
|
+
|
35
|
+
|
36
|
+
Paragraph with html after
|
37
|
+
<div></div>
|
38
|
+
|
39
|
+
Paragraph with html after, indented:
|
40
|
+
<em>Emphasis</em>
|
41
|
+
|
42
|
+
Paragraph with html after, indented: <em>Emphasis</em> *tralla* <em>Emph</em>
|
43
|
+
|
44
|
+
Paragraph with html after, indented: <em>Emphasis *tralla* Emph</em>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
Write a comment abouth the test here.
|
2
|
+
*** Parameters: ***
|
3
|
+
{}
|
4
|
+
*** Markdown input: ***
|
5
|
+
|
6
|
+
The HTML specification is maintained by the W3C.
|
7
|
+
|
8
|
+
*[HTML]: Hyper Text Markup Language
|
9
|
+
*[W3C]: World Wide Web Consortium
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
Operation Tigra Genesis is going well.
|
14
|
+
|
15
|
+
*[Tigra Genesis]:
|
16
|
+
*** Output of inspect ***
|
17
|
+
md_el(:document,[
|
18
|
+
md_par([
|
19
|
+
"The ",
|
20
|
+
md_el(:abbreviation,["HTML"] , {:title=>"Hyper Text Markup Language"}),
|
21
|
+
" specification is maintained by the ",
|
22
|
+
md_el(:abbreviation,["W3C"] , {:title=>"World Wide Web Consortium"}),
|
23
|
+
"."
|
24
|
+
]),
|
25
|
+
md_par([
|
26
|
+
"Operation ",
|
27
|
+
md_el(:abbreviation,["Tigra Genesis"] ),
|
28
|
+
" is going well."
|
29
|
+
])
|
30
|
+
] )
|
31
|
+
*** Output of to_html ***
|
32
|
+
|
33
|
+
<p>The <abbr title='Hyper Text Markup Language'>HTML</abbr> specification is maintained by the <abbr title='World Wide Web Consortium'>W3C</abbr>.</p>
|
34
|
+
|
35
|
+
<p>Operation <abbr>Tigra Genesis</abbr> is going well.</p>
|
36
|
+
|
37
|
+
*** Output of to_latex ***
|
38
|
+
The HTML specification is maintained by the W3C.
|
39
|
+
|
40
|
+
Operation Tigra Genesis is going well.
|
41
|
+
|
42
|
+
|
43
|
+
*** Output of to_s ***
|
44
|
+
The HTML specification is maintained by the W3C.Operation Tigra Genesis is going well.
|
45
|
+
*** Output of to_s ***
|
46
|
+
The HTML specification is maintained by the W3C.Operation Tigra Genesis is going well.
|
47
|
+
*** EOF ***
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
OK!
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
*** Output of Markdown.pl ***
|
56
|
+
<p>The HTML specification is maintained by the W3C.</p>
|
57
|
+
|
58
|
+
<p>*[HTML]: Hyper Text Markup Language
|
59
|
+
*[W3C]: World Wide Web Consortium</p>
|
60
|
+
|
61
|
+
<p>Operation Tigra Genesis is going well.</p>
|
62
|
+
|
63
|
+
<p>*[Tigra Genesis]:</p>
|
64
|
+
|
65
|
+
*** Output of Markdown.pl (parsed) ***
|
66
|
+
<p>The HTML specification is maintained by the W3C.</p
|
67
|
+
><p>*[HTML]: Hyper Text Markup Language
|
68
|
+
*[W3C]: World Wide Web Consortium</p
|
69
|
+
><p>Operation Tigra Genesis is going well.</p
|
70
|
+
><p>*[Tigra Genesis]:</p
|
71
|
+
>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
Write a comment abouth the test here.
|
2
|
+
*** Parameters: ***
|
3
|
+
{}
|
4
|
+
*** Markdown input: ***
|
5
|
+
|
6
|
+
Linea 1
|
7
|
+
|
8
|
+
Linea 2
|
9
|
+
*** Output of inspect ***
|
10
|
+
md_el(:document,[md_par(["Linea 1"]), md_par(["Linea 2"])] )
|
11
|
+
*** Output of to_html ***
|
12
|
+
|
13
|
+
<p>Linea 1</p>
|
14
|
+
|
15
|
+
<p>Linea 2</p>
|
16
|
+
|
17
|
+
*** Output of to_latex ***
|
18
|
+
Linea 1
|
19
|
+
|
20
|
+
Linea 2
|
21
|
+
|
22
|
+
|
23
|
+
*** Output of to_s ***
|
24
|
+
Linea 1Linea 2
|
25
|
+
*** Output of to_s ***
|
26
|
+
Linea 1Linea 2
|
27
|
+
*** EOF ***
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
OK!
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
*** Output of Markdown.pl ***
|
36
|
+
<p>Linea 1</p>
|
37
|
+
|
38
|
+
<p>Linea 2</p>
|
39
|
+
|
40
|
+
*** Output of Markdown.pl (parsed) ***
|
41
|
+
<p>Linea 1</p
|
42
|
+
><p>Linea 2</p
|
43
|
+
>
|
@@ -0,0 +1,131 @@
|
|
1
|
+
Write a comment abouth the test here.
|
2
|
+
*** Parameters: ***
|
3
|
+
{}
|
4
|
+
*** Markdown input: ***
|
5
|
+
This block is composed of three lines:
|
6
|
+
|
7
|
+
one
|
8
|
+
|
9
|
+
three
|
10
|
+
|
11
|
+
This block is composed of 5
|
12
|
+
|
13
|
+
|
14
|
+
one
|
15
|
+
|
16
|
+
|
17
|
+
four
|
18
|
+
|
19
|
+
|
20
|
+
This block is composed of 2
|
21
|
+
|
22
|
+
|
23
|
+
two
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
*** Output of inspect ***
|
28
|
+
md_el(:document,[
|
29
|
+
md_par(["This block is composed of three lines:"]),
|
30
|
+
md_el(:code,[] , {:raw_code=>"one\n\nthree\n"}),
|
31
|
+
md_par(["This block is composed of 5"]),
|
32
|
+
md_el(:code,[] , {:raw_code=>"one\n\n\nfour\n\n"}),
|
33
|
+
md_par(["This block is composed of 2"]),
|
34
|
+
md_el(:code,[] , {:raw_code=>"two"})
|
35
|
+
] )
|
36
|
+
*** Output of to_html ***
|
37
|
+
|
38
|
+
<p>This block is composed of three lines:</p>
|
39
|
+
|
40
|
+
<pre><code>one
|
41
|
+
|
42
|
+
three
|
43
|
+
</code></pre>
|
44
|
+
|
45
|
+
<p>This block is composed of 5</p>
|
46
|
+
|
47
|
+
<pre><code>one
|
48
|
+
|
49
|
+
|
50
|
+
four
|
51
|
+
|
52
|
+
</code></pre>
|
53
|
+
|
54
|
+
<p>This block is composed of 2</p>
|
55
|
+
|
56
|
+
<pre><code>two</code></pre>
|
57
|
+
|
58
|
+
*** Output of to_latex ***
|
59
|
+
This block is composed of three lines:
|
60
|
+
|
61
|
+
\begin{verbatim}one
|
62
|
+
|
63
|
+
three
|
64
|
+
\end{verbatim}
|
65
|
+
This block is composed of 5
|
66
|
+
|
67
|
+
\begin{verbatim}one
|
68
|
+
|
69
|
+
|
70
|
+
four
|
71
|
+
|
72
|
+
\end{verbatim}
|
73
|
+
This block is composed of 2
|
74
|
+
|
75
|
+
\begin{verbatim}two\end{verbatim}
|
76
|
+
|
77
|
+
*** Output of to_s ***
|
78
|
+
This block is composed of three lines:This block is composed of 5This block is composed of 2
|
79
|
+
*** Output of to_s ***
|
80
|
+
This block is composed of three lines:This block is composed of 5This block is composed of 2
|
81
|
+
*** EOF ***
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
OK!
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
*** Output of Markdown.pl ***
|
90
|
+
<p>This block is composed of three lines:</p>
|
91
|
+
|
92
|
+
<pre><code>one
|
93
|
+
|
94
|
+
three
|
95
|
+
</code></pre>
|
96
|
+
|
97
|
+
<p>This block is composed of 5</p>
|
98
|
+
|
99
|
+
<pre><code>one
|
100
|
+
|
101
|
+
|
102
|
+
four
|
103
|
+
</code></pre>
|
104
|
+
|
105
|
+
<p>This block is composed of 2</p>
|
106
|
+
|
107
|
+
<pre><code>two
|
108
|
+
</code></pre>
|
109
|
+
|
110
|
+
*** Output of Markdown.pl (parsed) ***
|
111
|
+
<p>This block is composed of three lines:</p
|
112
|
+
><pre
|
113
|
+
><code>one
|
114
|
+
|
115
|
+
three
|
116
|
+
</code
|
117
|
+
></pre
|
118
|
+
><p>This block is composed of 5</p
|
119
|
+
><pre
|
120
|
+
><code>one
|
121
|
+
|
122
|
+
|
123
|
+
four
|
124
|
+
</code
|
125
|
+
></pre
|
126
|
+
><p>This block is composed of 2</p
|
127
|
+
><pre
|
128
|
+
><code>two
|
129
|
+
</code
|
130
|
+
></pre
|
131
|
+
>
|
@@ -0,0 +1,64 @@
|
|
1
|
+
Comment
|
2
|
+
*** Parameters: ***
|
3
|
+
{}
|
4
|
+
*** Markdown input: ***
|
5
|
+
Here is an example of AppleScript:
|
6
|
+
|
7
|
+
tell application "Foo"
|
8
|
+
beep
|
9
|
+
end tell
|
10
|
+
tab
|
11
|
+
|
12
|
+
*** Output of inspect ***
|
13
|
+
md_el(:document,[
|
14
|
+
md_par(["Here is an example of AppleScript:"]),
|
15
|
+
md_el(:code,[] , {:raw_code=>"tell application \"Foo\"\n beep\nend tell\n\ttab"})
|
16
|
+
] )
|
17
|
+
*** Output of to_html ***
|
18
|
+
|
19
|
+
<p>Here is an example of AppleScript:</p>
|
20
|
+
|
21
|
+
<pre><code>tell application "Foo"
|
22
|
+
beep
|
23
|
+
end tell
|
24
|
+
tab</code></pre>
|
25
|
+
|
26
|
+
*** Output of to_latex ***
|
27
|
+
Here is an example of AppleScript:
|
28
|
+
|
29
|
+
\begin{verbatim}tell application "Foo"
|
30
|
+
beep
|
31
|
+
end tell
|
32
|
+
tab\end{verbatim}
|
33
|
+
|
34
|
+
*** Output of to_s ***
|
35
|
+
Here is an example of AppleScript:
|
36
|
+
*** Output of to_s ***
|
37
|
+
Here is an example of AppleScript:
|
38
|
+
*** EOF ***
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
OK!
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
*** Output of Markdown.pl ***
|
47
|
+
<p>Here is an example of AppleScript:</p>
|
48
|
+
|
49
|
+
<pre><code>tell application "Foo"
|
50
|
+
beep
|
51
|
+
end tell
|
52
|
+
tab
|
53
|
+
</code></pre>
|
54
|
+
|
55
|
+
*** Output of Markdown.pl (parsed) ***
|
56
|
+
<p>Here is an example of AppleScript:</p
|
57
|
+
><pre
|
58
|
+
><code>tell application "Foo"
|
59
|
+
beep
|
60
|
+
end tell
|
61
|
+
tab
|
62
|
+
</code
|
63
|
+
></pre
|
64
|
+
>
|