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