marker 0.3.3 → 0.4.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/README +26 -20
- data/lib/marker/common.rb +4 -0
- data/lib/marker/language.treetop +515 -78
- data/lib/marker/lists.rb +142 -112
- data/lib/marker/markup.rb +34 -16
- data/lib/marker/templates.rb +51 -4
- data/lib/marker/text.rb +37 -5
- data/test/encodings_test.rb +3 -3
- data/test/formatting_test.rb +1 -1
- data/test/helper.rb +9 -0
- data/test/lists_test.rb +12 -5
- data/test/templates_test.rb +138 -23
- data/test/test_helper.rb +12 -1
- metadata +58 -59
data/lib/marker/text.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright 2009 Ryan Blue.
|
2
|
+
# Copyright 2009-2011 Ryan Blue.
|
3
3
|
# Distributed under the terms of the GNU General Public License (GPL).
|
4
4
|
# See the LICENSE file for further information on the GPL.
|
5
5
|
#++
|
@@ -7,13 +7,25 @@
|
|
7
7
|
require 'marker/common'
|
8
8
|
|
9
9
|
module Marker #:nodoc:
|
10
|
-
class Paragraph <
|
10
|
+
class Paragraph < ParseNode
|
11
|
+
def to_html( options = {} )
|
12
|
+
if text.no_wrap?
|
13
|
+
text.to_html(options)
|
14
|
+
else
|
15
|
+
"<p>#{text.to_html(options)}</p>"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_s( options = {} )
|
20
|
+
text.to_s(options)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class TextBlock < RecursiveList
|
11
25
|
def to_html( options = {} )
|
12
|
-
'<p>' +
|
13
26
|
to_a.map { |p|
|
14
27
|
p.to_html(options)
|
15
|
-
}.join(' ')
|
16
|
-
'</p>'
|
28
|
+
}.join(' ')
|
17
29
|
end
|
18
30
|
|
19
31
|
# TODO: add wordwrap
|
@@ -22,6 +34,11 @@ module Marker #:nodoc:
|
|
22
34
|
p.to_s(options)
|
23
35
|
}.join(' ')
|
24
36
|
end
|
37
|
+
|
38
|
+
# returns true if this text block does not need to be wrapped in a paragraph
|
39
|
+
def no_wrap?
|
40
|
+
single? and h.no_wrap?
|
41
|
+
end
|
25
42
|
end
|
26
43
|
|
27
44
|
class Phrase < RecursiveList
|
@@ -44,6 +61,11 @@ module Marker #:nodoc:
|
|
44
61
|
(ws and ws.present?) or (aws and aws.present?)
|
45
62
|
end
|
46
63
|
|
64
|
+
# returns true if this phrase does not need to be wrapped in a paragraph
|
65
|
+
def no_wrap?
|
66
|
+
single? and h.is_a? Template
|
67
|
+
end
|
68
|
+
|
47
69
|
#-- defaults ++
|
48
70
|
def ws
|
49
71
|
nil
|
@@ -74,6 +96,16 @@ module Marker #:nodoc:
|
|
74
96
|
end
|
75
97
|
end
|
76
98
|
|
99
|
+
class Escaped < ParseNode
|
100
|
+
def to_html( options = {} )
|
101
|
+
text_value.slice(-1,1)
|
102
|
+
end
|
103
|
+
|
104
|
+
def to_s( options = {} )
|
105
|
+
text_value.slice(-1,1)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
77
109
|
class HorizRule < ParseNode
|
78
110
|
def to_html( options = {} )
|
79
111
|
"<hr />" +
|
data/test/encodings_test.rb
CHANGED
@@ -6,19 +6,19 @@ class EncodingsTest < Test::Unit::TestCase
|
|
6
6
|
def test_linux_newlines
|
7
7
|
text = "one\ntwo\n\nthree"
|
8
8
|
markup = Marker.parse text
|
9
|
-
assert_match("<p>one two</p>\n
|
9
|
+
assert_match("<p>one two</p>\n<p>three</p>", markup.to_html)
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_windows_newlines
|
13
13
|
text = "one\r\ntwo\r\n\r\nthree"
|
14
14
|
markup = Marker.parse text
|
15
|
-
assert_match("<p>one two</p>\n
|
15
|
+
assert_match("<p>one two</p>\n<p>three</p>", markup.to_html)
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_mac_newlines
|
19
19
|
text = "one\rtwo\r\rthree"
|
20
20
|
markup = Marker.parse text
|
21
|
-
assert_match("<p>one two</p>\n
|
21
|
+
assert_match("<p>one two</p>\n<p>three</p>", markup.to_html)
|
22
22
|
end
|
23
23
|
|
24
24
|
end
|
data/test/formatting_test.rb
CHANGED
@@ -69,7 +69,7 @@ class FormattingTest < Test::Unit::TestCase
|
|
69
69
|
text = "paragraph 1\n\nparagraph 2\n\nparagraph 3"
|
70
70
|
markup = Marker.parse text
|
71
71
|
|
72
|
-
assert_match("<p>paragraph 1</p>\n
|
72
|
+
assert_match("<p>paragraph 1</p>\n<p>paragraph 2</p>\n<p>paragraph 3</p>", markup.to_html)
|
73
73
|
end
|
74
74
|
|
75
75
|
def test_newlines_in_paragraphs
|
data/test/helper.rb
ADDED
data/test/lists_test.rb
CHANGED
@@ -14,7 +14,7 @@ class ListTest < Test::Unit::TestCase
|
|
14
14
|
text = "* List item 1\n** List item 2\n* List item 3"
|
15
15
|
markup = Marker.parse text
|
16
16
|
|
17
|
-
assert_match("<ul><li>List item 1
|
17
|
+
assert_match("<ul><li>List item 1<ul><li>List item 2</li></ul></li><li>List item 3</li></ul>", markup.to_html)
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_numbered_list
|
@@ -28,7 +28,7 @@ class ListTest < Test::Unit::TestCase
|
|
28
28
|
text = "# List item 1\n## List item 2\n# List item 3"
|
29
29
|
markup = Marker.parse text
|
30
30
|
|
31
|
-
assert_match("<ol><li>List item 1
|
31
|
+
assert_match("<ol><li>List item 1<ol><li>List item 2</li></ol></li><li>List item 3</li></ol>", markup.to_html)
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_definition_list
|
@@ -59,15 +59,22 @@ class ListTest < Test::Unit::TestCase
|
|
59
59
|
markup = Marker.parse text
|
60
60
|
|
61
61
|
assert_match("<ol><li>List item 1</li></ol><ul><li>List item 2</li></ul><ol><li>List item 3</li></ol><dl><dt>List item 4</dt>" +
|
62
|
-
"<dd>definition</dd></dl><div class='indent'><div>List item 5</div></div><ul><li>List item 6</li></ul>", markup.to_html)
|
62
|
+
"<dd>definition</dd></dl><div class='indent'><div class='indented_item'>List item 5</div></div><ul><li>List item 6</li></ul>", markup.to_html)
|
63
63
|
end
|
64
64
|
|
65
65
|
def test_nested_mixed_list
|
66
66
|
text = "# List item 1\n#* List item 2\n# List item 3\n## List item 4\n#; List item 5 : definition\n#:List item 6"
|
67
67
|
markup = Marker.parse text
|
68
68
|
|
69
|
-
assert_match("<ol><li>List item 1
|
70
|
-
"<dl><dt>List item 5</dt><dd>definition</dd></dl><div class='indent'><div>List item 6</div></div></ol>", markup.to_html)
|
69
|
+
assert_match("<ol><li>List item 1<ul><li>List item 2</li></ul></li><li>List item 3<ol><li>List item 4</li></ol>" +
|
70
|
+
"<dl><dt>List item 5</dt><dd>definition</dd></dl><div class='indent'><div class='indented_item'>List item 6</div></div></li></ol>", markup.to_html)
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_bare_nested_list
|
74
|
+
text = "*** item"
|
75
|
+
markup = Marker.parse text
|
76
|
+
|
77
|
+
assert_match("<ul><li><ul><li><ul><li>item</li></ul></li></ul></li></ul>", markup.to_html)
|
71
78
|
end
|
72
79
|
|
73
80
|
end
|
data/test/templates_test.rb
CHANGED
@@ -1,55 +1,170 @@
|
|
1
1
|
require File.expand_path( File.dirname( __FILE__ ) + '/test_helper' )
|
2
2
|
require 'marker'
|
3
3
|
|
4
|
-
class TemplatesTest <
|
4
|
+
class TemplatesTest < MarkerTest
|
5
|
+
|
6
|
+
DEFAULT_OPTIONS = '{:link_base=>"", :footnotes=>}'
|
5
7
|
|
6
8
|
def test_basic_template
|
7
9
|
text = "{{ template }}"
|
8
|
-
markup =
|
10
|
+
markup = parse_with_assertions text
|
11
|
+
html = markup.to_html
|
9
12
|
|
10
|
-
assert_match("
|
13
|
+
assert_match("render:template( :html, [], {}, #{DEFAULT_OPTIONS} )", html, text)
|
14
|
+
assert_no_match(/<div/, html, text)
|
11
15
|
end
|
12
16
|
|
13
|
-
def
|
17
|
+
def test_ordered_args
|
14
18
|
text = "{{ template | one | two | three }}"
|
15
|
-
markup =
|
16
|
-
|
17
|
-
|
19
|
+
markup = parse_with_assertions text
|
20
|
+
html = markup.to_html
|
21
|
+
|
22
|
+
assert_match("render:template( :html, [\"one\", \"two\", \"three\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
23
|
+
assert_no_match(/<div/, html, text)
|
18
24
|
end
|
19
25
|
|
20
26
|
def test_named_args
|
21
27
|
text = "{{ template | one=1 | two = 2 }}"
|
22
|
-
markup =
|
23
|
-
|
24
|
-
|
25
|
-
assert_match("
|
26
|
-
assert_match("\"two\"=>\"2\"",
|
27
|
-
assert_match("\"one\"=>\"1\"",
|
28
|
-
assert_match("} )
|
28
|
+
markup = parse_with_assertions text
|
29
|
+
html = markup.to_html
|
30
|
+
|
31
|
+
assert_match("render:template( :html, [], {", html, text)
|
32
|
+
assert_match("\"two\"=>\"2\"", html, text)
|
33
|
+
assert_match("\"one\"=>\"1\"", html, text)
|
34
|
+
assert_match("}, #{DEFAULT_OPTIONS} )", html, text)
|
35
|
+
assert_no_match(/<div/, html, text)
|
29
36
|
end
|
30
37
|
|
31
38
|
def test_mixed_args
|
32
39
|
text = "{{ template | one | two = 2 | three }}"
|
33
|
-
markup =
|
34
|
-
|
35
|
-
|
40
|
+
markup = parse_with_assertions text
|
41
|
+
html = markup.to_html
|
42
|
+
|
43
|
+
assert_match("render:template( :html, [\"one\", \"three\"], {\"two\"=>\"2\"}, #{DEFAULT_OPTIONS} )", html, text)
|
44
|
+
assert_no_match(/<div/, html, text)
|
36
45
|
end
|
37
46
|
|
38
47
|
def test_empty_args
|
39
48
|
text = "{{ template | }}"
|
40
|
-
markup =
|
41
|
-
|
49
|
+
markup = parse_with_assertions text
|
50
|
+
html = markup.to_html
|
51
|
+
assert_match("render:template( :html, [\"\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
52
|
+
assert_no_match(/<div/, html, text)
|
42
53
|
|
43
54
|
text = "{{ template | | }}"
|
44
|
-
markup =
|
45
|
-
|
55
|
+
markup = parse_with_assertions text
|
56
|
+
html = markup.to_html
|
57
|
+
assert_match("render:template( :html, [\"\", \"\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
58
|
+
assert_no_match(/<div/, html, text)
|
46
59
|
end
|
47
60
|
|
48
61
|
def test_rendered_args
|
49
62
|
text = "{{ template | [http://www.example.com Example] }}"
|
50
|
-
markup =
|
63
|
+
markup = parse_with_assertions text
|
64
|
+
html = markup.to_html
|
65
|
+
|
66
|
+
assert_match("render:template( :html, [\"<a href='http://www.example.com'>Example</a>\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
67
|
+
assert_no_match(/<div/, html, text)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_escaped_characters
|
71
|
+
# keep in mind here that the default template rendering (that produces
|
72
|
+
# "render:name(*args)") inserts the template arguments by using
|
73
|
+
# String#inspect, so everything that is produced will be escaped.
|
74
|
+
text = '{{ template | \| | a \= b | \|a, b\| }}'
|
75
|
+
markup = parse_with_assertions text
|
76
|
+
html = markup.to_html
|
77
|
+
|
78
|
+
# escaping delimiters is not supported (and may not ever be)
|
79
|
+
#assert_match("render:template( :html, [\"|\", \"a = b\", \"|a, b|\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
80
|
+
assert_no_match(/<div/, html, text)
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_line_anchored_markup_inside_templates
|
84
|
+
text = "{{ ruby code |\n puts 'hello'\n}}"
|
85
|
+
markup = parse_with_assertions text
|
86
|
+
html = markup.to_html
|
87
|
+
|
88
|
+
assert_match("render:ruby_code( :html, [\"<pre>\\nputs 'hello'\\n</pre>\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
89
|
+
assert_match(/<div/, html, text)
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_verbatim_arg_without_final_newline
|
93
|
+
text = "{{ ruby code |\n puts 'hello'}}"
|
94
|
+
markup = parse_with_assertions text
|
95
|
+
html = markup.to_html
|
96
|
+
|
97
|
+
assert_match("render:ruby_code( :html, [\"<pre>\\nputs 'hello'\\n</pre>\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
98
|
+
assert_match(/<div/, html, text)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_verbatim_arg_without_newline_before_pipe
|
102
|
+
text = "{{ ruby code |\n puts 'hello'| another arg }}"
|
103
|
+
markup = parse_with_assertions text
|
104
|
+
html = markup.to_html
|
105
|
+
|
106
|
+
assert_match("render:ruby_code( :html, [\"<pre>\\nputs 'hello'\\n</pre>\", \"another arg\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
107
|
+
assert_match(/<div/, html, text)
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_line_anchored_markup_inside_templates_with_blank_lines
|
111
|
+
text = "{{ ruby code |\n puts 'hello'\n\n* list}}"
|
112
|
+
markup = parse_with_assertions text
|
113
|
+
html = markup.to_html
|
114
|
+
|
115
|
+
assert_match("render:ruby_code( :html, [\"<pre>\\nputs 'hello'\\n</pre>\\n<ul><li>list</li></ul>\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
116
|
+
assert_match(/<div/, html, text)
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_multiline_inline_arguments
|
120
|
+
text = "this is a {{bold|paragraph\nwith some bold text}} in it."
|
121
|
+
markup = parse_with_assertions text
|
122
|
+
html = markup.to_html
|
123
|
+
|
124
|
+
assert_match("this is a render:bold( :html, [\"paragraph with some bold text\"], {}, #{DEFAULT_OPTIONS} ) in it.", html, text)
|
125
|
+
assert_no_match(/<div/, html, text)
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_multiparagraph_inline_arguments
|
129
|
+
text = "this is a {{bold|paragraph\n\nwith some bold text}} in it."
|
130
|
+
markup = parse_with_assertions text
|
131
|
+
html = markup.to_html
|
132
|
+
|
133
|
+
assert_match("this is a <div class=\'bold\'>render:bold( :html, [\"<p>paragraph</p>\\n<p>with some bold text</p>\"], {}, #{DEFAULT_OPTIONS} )</div> in it.", html, text)
|
134
|
+
assert_match(/<div/, html, text)
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_list_with_starting_newline
|
138
|
+
text = "{{ inner list |\n* list item 1\n*list item 2}}"
|
139
|
+
markup = parse_with_assertions text
|
140
|
+
html = markup.to_html
|
141
|
+
|
142
|
+
assert_match("render:inner_list( :html, [\"<ul><li>list item 1</li><li>list item 2</li></ul>\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
143
|
+
assert_match(/<div/, html, text)
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_list_with_starting_unsafe_text
|
147
|
+
# you might expect this to render as a two-item list, but this is one of
|
148
|
+
# the ways Marker differs with MediaWiki. For consistency, Marker will not
|
149
|
+
# treat any text that doesn't appear at the start a line as line anchored
|
150
|
+
# markup. Otherwise, cases like this would behave strangely:
|
151
|
+
# {{ template | should this be verbatim? }}
|
152
|
+
#
|
153
|
+
text = "{{ inner list |* list item 1\n*list item 2}}"
|
154
|
+
markup = parse_with_assertions text
|
155
|
+
html = markup.to_html
|
156
|
+
|
157
|
+
assert_match("render:inner_list( :html, [\"<p>* list item 1</p>\\n<ul><li>list item 2</li></ul>\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
158
|
+
assert_match(/<div/, html, text)
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_forced_block_argument
|
162
|
+
text = "{{ block |\nnormal text}}"
|
163
|
+
markup = parse_with_assertions text
|
164
|
+
html = markup.to_html
|
51
165
|
|
52
|
-
assert_match("
|
166
|
+
assert_match("render:block( :html, [\"<p>normal text</p>\"], {}, #{DEFAULT_OPTIONS} )", html, text)
|
167
|
+
assert_match(/<div/, html, text)
|
53
168
|
end
|
54
169
|
|
55
170
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,2 +1,13 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
$LOAD_PATH
|
2
|
+
$LOAD_PATH.unshift File.expand_path( File.dirname(__FILE__) + '/../lib' )
|
3
|
+
|
4
|
+
class MarkerTest < Test::Unit::TestCase
|
5
|
+
def parse_with_assertions( text )
|
6
|
+
tree = nil
|
7
|
+
assert_nothing_raised do
|
8
|
+
tree = Marker.parse( text )
|
9
|
+
end
|
10
|
+
assert_not_nil( tree, Marker.parser.failure_reason )
|
11
|
+
tree
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,95 +1,94 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: marker
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 3
|
8
|
-
- 3
|
9
|
-
version: 0.3.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Ryan Blue
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-07-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: treetop
|
22
|
-
|
23
|
-
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
- 1
|
29
|
-
- 4
|
30
|
-
- 2
|
31
|
-
version: 1.4.2
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.4'
|
32
22
|
type: :runtime
|
33
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.4'
|
34
30
|
description:
|
35
31
|
email: rdblue@gmail.com
|
36
|
-
executables:
|
32
|
+
executables:
|
37
33
|
- marker
|
38
34
|
extensions: []
|
39
|
-
|
40
|
-
extra_rdoc_files:
|
35
|
+
extra_rdoc_files:
|
41
36
|
- README
|
42
37
|
- LICENSE
|
43
|
-
files:
|
38
|
+
files:
|
44
39
|
- bin/marker
|
40
|
+
- lib/marker.rb
|
41
|
+
- lib/marker/links.rb
|
45
42
|
- lib/marker/common.rb
|
43
|
+
- lib/marker/templates.rb
|
46
44
|
- lib/marker/lists.rb
|
47
|
-
- lib/marker/headings.rb
|
48
|
-
- lib/marker/text.rb
|
49
45
|
- lib/marker/markup.rb
|
46
|
+
- lib/marker/text.rb
|
47
|
+
- lib/marker/headings.rb
|
50
48
|
- lib/marker/verbatim.rb
|
51
|
-
- lib/marker/links.rb
|
52
|
-
- lib/marker/templates.rb
|
53
|
-
- lib/marker.rb
|
54
49
|
- lib/marker/language.treetop
|
55
50
|
- README
|
56
51
|
- LICENSE
|
57
|
-
|
52
|
+
- test/encodings_test.rb
|
53
|
+
- test/headings_test.rb
|
54
|
+
- test/formatting_test.rb
|
55
|
+
- test/lists_test.rb
|
56
|
+
- test/links_test.rb
|
57
|
+
- test/test_helper.rb
|
58
|
+
- test/templates_test.rb
|
59
|
+
- test/verbatim_test.rb
|
60
|
+
- test/helper.rb
|
58
61
|
homepage: http://github.com/rdblue/marker
|
59
62
|
licenses: []
|
60
|
-
|
61
63
|
post_install_message:
|
62
64
|
rdoc_options: []
|
63
|
-
|
64
|
-
require_paths:
|
65
|
+
require_paths:
|
65
66
|
- lib
|
66
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
- 0
|
79
|
-
version: "0"
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ! '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
80
79
|
requirements: []
|
81
|
-
|
82
80
|
rubyforge_project:
|
83
|
-
rubygems_version: 1.
|
81
|
+
rubygems_version: 1.8.24
|
84
82
|
signing_key:
|
85
83
|
specification_version: 3
|
86
84
|
summary: A markup parser that outputs html and text. Syntax is similar to MediaWiki.
|
87
|
-
test_files:
|
88
|
-
- test/
|
85
|
+
test_files:
|
86
|
+
- test/encodings_test.rb
|
89
87
|
- test/headings_test.rb
|
90
|
-
- test/links_test.rb
|
91
|
-
- test/test_helper.rb
|
92
88
|
- test/formatting_test.rb
|
93
|
-
- test/encodings_test.rb
|
94
89
|
- test/lists_test.rb
|
90
|
+
- test/links_test.rb
|
91
|
+
- test/test_helper.rb
|
95
92
|
- test/templates_test.rb
|
93
|
+
- test/verbatim_test.rb
|
94
|
+
- test/helper.rb
|