tartan 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +144 -11
- data/lib/markdown.yml +9 -7
- data/lib/symbolize.rb +0 -3
- data/test/MarkdownTest_1.0/Markdown Documentation - Basics.out +316 -0
- data/test/MarkdownTest_1.0/Markdown Documentation - Syntax.out +947 -0
- data/test/MarkdownTest_1.0/run-markdown.rb +3 -3
- data/test/harder/test-markdown-harder.rb +1 -1
- data/test/test-markdown.yml +48 -1
- data/test/test-readme-example.rb +144 -5
- data/test/test-regexp.rb +42 -0
- metadata +6 -2
@@ -1,9 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#$Id: run-markdown.rb
|
2
|
+
#$Id: run-markdown.rb 174 2006-08-21 14:51:12Z bitherder $
|
3
3
|
$:.unshift File.join(File.dirname(__FILE__), "../..", "lib")
|
4
4
|
|
5
5
|
require 'tartan'
|
6
|
-
require '
|
6
|
+
require 'tartan_markdown'
|
7
7
|
# require 'profile'
|
8
8
|
|
9
9
|
class WikiparserRunner
|
@@ -42,7 +42,7 @@ class WikiparserRunner
|
|
42
42
|
|
43
43
|
text = File.open(wikiFileName).read
|
44
44
|
require 'profile' if options['profile']
|
45
|
-
wp =
|
45
|
+
wp = TartanMarkdown.new(text, options)
|
46
46
|
html = wp.to_html
|
47
47
|
outFile = File.open(outFileName, "w+")
|
48
48
|
outFile.puts html
|
data/test/test-markdown.yml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#$Id: test-markdown.yml
|
1
|
+
#$Id: test-markdown.yml 175 2006-08-21 14:52:09Z bitherder $
|
2
2
|
---
|
3
3
|
title: OneParagraph
|
4
4
|
in: "abc\ndef\nxyz"
|
@@ -52,6 +52,7 @@ in: |-
|
|
52
52
|
* item2
|
53
53
|
html: |-
|
54
54
|
<h1>A Header 1</h1>
|
55
|
+
|
55
56
|
<ul>
|
56
57
|
<li>item1</li>
|
57
58
|
<li>item2</li>
|
@@ -395,6 +396,22 @@ html: |+
|
|
395
396
|
Plus: <code>\+</code><br />
|
396
397
|
Minus: <code>\-</code><br /></p>
|
397
398
|
---
|
399
|
+
title: ParagraphWithList
|
400
|
+
in: |-
|
401
|
+
A list within a blockquote:
|
402
|
+
|
403
|
+
* asterisk 1
|
404
|
+
* asterisk 2
|
405
|
+
* asterisk 3
|
406
|
+
html: |-
|
407
|
+
<p>A list within a blockquote:</p>
|
408
|
+
|
409
|
+
<ul>
|
410
|
+
<li>asterisk 1</li>
|
411
|
+
<li>asterisk 2</li>
|
412
|
+
<li>asterisk 3</li>
|
413
|
+
</ul>
|
414
|
+
---
|
398
415
|
title: ListInBlockquote
|
399
416
|
in: |
|
400
417
|
> A list within a blockquote:
|
@@ -1067,6 +1084,21 @@ html: |-
|
|
1067
1084
|
<p>Happy days</p>
|
1068
1085
|
|
1069
1086
|
|
1087
|
+
---
|
1088
|
+
title: TwoLineCodeBlock
|
1089
|
+
in: |2-
|
1090
|
+
Paragraph 1
|
1091
|
+
|
1092
|
+
http://example.com/
|
1093
|
+
|
1094
|
+
Paragraph 2
|
1095
|
+
html: |-
|
1096
|
+
<p>Paragraph 1</p>
|
1097
|
+
|
1098
|
+
<pre><code>http://example.com/
|
1099
|
+
</code></pre>
|
1100
|
+
|
1101
|
+
<p>Paragraph 2</p>
|
1070
1102
|
---
|
1071
1103
|
# Transfered from test-markdown-harder.yml
|
1072
1104
|
title: LTGTinCode
|
@@ -1142,3 +1174,18 @@ html: |-
|
|
1142
1174
|
<p>bob</p>
|
1143
1175
|
|
1144
1176
|
<hr />
|
1177
|
+
---
|
1178
|
+
title: CodeAfterHeader
|
1179
|
+
in: |-
|
1180
|
+
##Header
|
1181
|
+
|
1182
|
+
code
|
1183
|
+
html: |-
|
1184
|
+
<h2>Header</h2>
|
1185
|
+
|
1186
|
+
<pre><code>code
|
1187
|
+
</code></pre>
|
1188
|
+
---
|
1189
|
+
title: DoubleCevrons
|
1190
|
+
in: Start with <<some text>> and some other text.
|
1191
|
+
html: <p>Start with <<some text>> and some other text.</p>
|
data/test/test-readme-example.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#$Id: test-readme-example.rb
|
1
|
+
#$Id: test-readme-example.rb 173 2006-08-21 09:19:04Z bitherder $
|
2
2
|
|
3
3
|
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
4
4
|
|
@@ -8,16 +8,98 @@ require 'tartan'
|
|
8
8
|
ParagraphAndCodeDef = %q~
|
9
9
|
block:
|
10
10
|
- title: code
|
11
|
-
match:
|
11
|
+
match: /(^[ ]{2,}\S.+?$\n)+^[ ]{2,}\S.+?$/m
|
12
12
|
html:
|
13
13
|
start_mark: <pre><code>
|
14
14
|
end_mark: </code></pre>
|
15
15
|
- title: paragraph
|
16
|
-
match:
|
16
|
+
match: /(^[^\n]+$\n)*^[^\n]+$/m
|
17
17
|
html:
|
18
18
|
start_mark: <p>
|
19
19
|
end_mark: </p>
|
20
20
|
~
|
21
|
+
WithEmphasisDef = %q~
|
22
|
+
block:
|
23
|
+
- title: code
|
24
|
+
match: /(^[ ]{2,}\S.+?$\n)+^[ ]{2,}\S.+?$/m
|
25
|
+
html:
|
26
|
+
start_mark: <pre><code>
|
27
|
+
end_mark: </code></pre>
|
28
|
+
- title: paragraph
|
29
|
+
match: /(^[^\n]+$\n)*^[^\n]+$/m
|
30
|
+
subparse: paragraph
|
31
|
+
html:
|
32
|
+
start_mark: <p>
|
33
|
+
end_mark: </p>
|
34
|
+
paragraph:
|
35
|
+
- title: strong
|
36
|
+
match: /\*\*(.*?)\*\*/m
|
37
|
+
html:
|
38
|
+
replace: <strong>\1</strong>
|
39
|
+
|
40
|
+
- rescan
|
41
|
+
|
42
|
+
- title: emphasis
|
43
|
+
match: /\*(.*?)\*/m
|
44
|
+
html:
|
45
|
+
replace: <em>\1</em>
|
46
|
+
~
|
47
|
+
|
48
|
+
WithoutStrongDef = %q~
|
49
|
+
block:
|
50
|
+
- title: code
|
51
|
+
match: /(^[ ]{2,}\S.+?$\n)+^[ ]{2,}\S.+?$/m
|
52
|
+
html:
|
53
|
+
start_mark: <pre><code>
|
54
|
+
end_mark: </code></pre>
|
55
|
+
- title: paragraph
|
56
|
+
match: /(^[^\n]+$\n)*^[^\n]+$/m
|
57
|
+
subparse: paragraph
|
58
|
+
html:
|
59
|
+
start_mark: <p>
|
60
|
+
end_mark: </p>
|
61
|
+
paragraph:
|
62
|
+
- title: emphasis
|
63
|
+
match: /\*(.*?)\*/
|
64
|
+
html:
|
65
|
+
replace: <em>\1</em>
|
66
|
+
~
|
67
|
+
EntityDef = %q~
|
68
|
+
paragraph:
|
69
|
+
- rescan
|
70
|
+
- title: amp
|
71
|
+
match: /&/
|
72
|
+
html:
|
73
|
+
replace: '&'
|
74
|
+
rescan: true
|
75
|
+
- title: rightArrow
|
76
|
+
match: /->/
|
77
|
+
html:
|
78
|
+
replace: '→'
|
79
|
+
rescan: true
|
80
|
+
- title: lessThan
|
81
|
+
match: /</
|
82
|
+
html:
|
83
|
+
replace: '<'
|
84
|
+
rescan: true
|
85
|
+
- title: greaterThan
|
86
|
+
match: />/
|
87
|
+
html:
|
88
|
+
replace: '>'
|
89
|
+
~
|
90
|
+
|
91
|
+
EmphasisText = <<TEXT
|
92
|
+
Now is the time for all *good*
|
93
|
+
**men** to come to the aid of
|
94
|
+
their party.
|
95
|
+
|
96
|
+
p "Hello"
|
97
|
+
p "World"
|
98
|
+
TEXT
|
99
|
+
|
100
|
+
EmbeddedEmphasisText =
|
101
|
+
"Now listen to this **I want *you* to really hear me**."
|
102
|
+
|
21
103
|
class ReadmeTestCase < Test::Unit::TestCase
|
22
104
|
class ParagraphAndCode < Tartan
|
23
105
|
set_defs(ParagraphAndCodeDef)
|
@@ -25,7 +107,7 @@ class ReadmeTestCase < Test::Unit::TestCase
|
|
25
107
|
|
26
108
|
def testParagraphAndCode
|
27
109
|
text = <<TEXT
|
28
|
-
Now is the time for all good
|
110
|
+
Now is the time for all good
|
29
111
|
men to come to the aid of
|
30
112
|
their party.
|
31
113
|
|
@@ -34,7 +116,7 @@ their party.
|
|
34
116
|
TEXT
|
35
117
|
|
36
118
|
html = \
|
37
|
-
%q~<p>Now is the time for all good
|
119
|
+
%q~<p>Now is the time for all good
|
38
120
|
men to come to the aid of
|
39
121
|
their party.</p>
|
40
122
|
|
@@ -45,4 +127,61 @@ their party.</p>
|
|
45
127
|
parser = ParagraphAndCode.new(text)
|
46
128
|
assert_equal(html, parser.to_html)
|
47
129
|
end
|
130
|
+
|
131
|
+
class WithEmphasis < Tartan
|
132
|
+
set_defs(WithEmphasisDef)
|
133
|
+
end
|
134
|
+
|
135
|
+
def testWithEmphasis
|
136
|
+
html = \
|
137
|
+
%q~<p>Now is the time for all <em>good</em>
|
138
|
+
<strong>men</strong> to come to the aid of
|
139
|
+
their party.</p>
|
140
|
+
|
141
|
+
<pre><code> p "Hello"
|
142
|
+
p "World"</code></pre>
|
143
|
+
~
|
144
|
+
|
145
|
+
parser = WithEmphasis.new(EmphasisText)
|
146
|
+
assert_equal(html, parser.to_html)
|
147
|
+
end
|
148
|
+
|
149
|
+
def testWithEmbeddedEmpahsis
|
150
|
+
html = "<p>Now listen to this <strong>I want <em>you</em> to really hear me</strong>.</p>"
|
151
|
+
|
152
|
+
parser = WithEmphasis.new(EmbeddedEmphasisText)
|
153
|
+
assert_equal(html, parser.to_html)
|
154
|
+
end
|
155
|
+
|
156
|
+
class WithoutStrong < Tartan
|
157
|
+
set_defs(WithoutStrongDef)
|
158
|
+
end
|
159
|
+
|
160
|
+
def testWithoutStrong
|
161
|
+
html = "<p>Now listen to this <em></em>I want <em>you</em> to really hear me<em></em>.</p>"
|
162
|
+
|
163
|
+
parser = WithoutStrong.new(EmbeddedEmphasisText)
|
164
|
+
assert_equal(html, parser.to_html)
|
165
|
+
end
|
166
|
+
|
167
|
+
class EntityMixin < Tartan
|
168
|
+
set_defs(WithEmphasisDef)
|
169
|
+
add_defs(EntityDef)
|
170
|
+
end
|
171
|
+
|
172
|
+
def testEnityMixin
|
173
|
+
text =
|
174
|
+
%q~A paragraph in HTML is marked-up using a <p> start tag and a </p> end tag.
|
175
|
+
Thus, the phrase "I was here." -> "<p>I was here</p>". If you want to use less
|
176
|
+
than and greater than characters you will need to put < and > respectively
|
177
|
+
in your HTML.~
|
178
|
+
|
179
|
+
html =
|
180
|
+
%q~<p>A paragraph in HTML is marked-up using a <p> start tag and a </p> end tag.
|
181
|
+
Thus, the phrase "I was here." → "<p>I was here</p>". If you want to use less
|
182
|
+
than and greater than characters you will need to put &lt; and &gt; respectively
|
183
|
+
in your HTML.</p>~
|
184
|
+
parser = EntityMixin.new(text)
|
185
|
+
assert_equal(html, parser.to_html)
|
186
|
+
end
|
48
187
|
end
|
data/test/test-regexp.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# $Id: test-regexp.rb 173 2006-08-21 09:19:04Z bitherder $
|
2
|
+
|
3
|
+
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'core_ext/regexp'
|
7
|
+
|
8
|
+
class TestString < Test::Unit::TestCase
|
9
|
+
def testOneLine
|
10
|
+
match = "/^(\s+)$/".to_regexp.match(" \n ")
|
11
|
+
assert_equal(" ", match[1])
|
12
|
+
end
|
13
|
+
|
14
|
+
def testMultiLine
|
15
|
+
text_in = " \n \n"
|
16
|
+
expected_match = " \n \n"
|
17
|
+
regex_from_string = '/^(\s+)$/m'.to_regexp
|
18
|
+
|
19
|
+
assert_equal(Regexp::MULTILINE, regex_from_string.options)
|
20
|
+
assert_equal('^(\s+)$', regex_from_string.source)
|
21
|
+
|
22
|
+
plain_regex = /^(\s+)$/m
|
23
|
+
|
24
|
+
assert_equal(Regexp::MULTILINE, plain_regex.options)
|
25
|
+
assert_equal('^(\s+)$', plain_regex.source)
|
26
|
+
|
27
|
+
match_from_string = regex_from_string.match(text_in)
|
28
|
+
match_from_regex = /^(\s+)$/m.match(text_in)
|
29
|
+
|
30
|
+
assert_equal(expected_match, match_from_regex[1])
|
31
|
+
assert_equal(expected_match, match_from_string[1])
|
32
|
+
end
|
33
|
+
|
34
|
+
def testWhitespaceAtEndOfLine
|
35
|
+
regexp = '/^(#{1,6})\s*([^#\s][^#]*?)(?:\s*\#+)?\s*?$/'.to_regexp
|
36
|
+
match = regexp.match "## header\n\nSome text."
|
37
|
+
|
38
|
+
assert_equal("##", match[1])
|
39
|
+
assert_equal("header", match[2])
|
40
|
+
assert_equal("## header", match[0])
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: tartan
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2006-08-
|
6
|
+
version: 0.1.1
|
7
|
+
date: 2006-08-21 00:00:00 +02:00
|
8
8
|
summary: A library for building text parsers
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- test/test-markdown.yml
|
42
42
|
- test/test-match-data.rb
|
43
43
|
- test/test-readme-example.rb
|
44
|
+
- test/test-regexp.rb
|
44
45
|
- test/test-tables.rb
|
45
46
|
- test/test-tables.yml
|
46
47
|
- test/test-tartan-markdown.rb
|
@@ -75,8 +76,10 @@ files:
|
|
75
76
|
- test/MarkdownTest_1.0/Literal quotes in titles.html
|
76
77
|
- test/MarkdownTest_1.0/Literal quotes in titles.text
|
77
78
|
- test/MarkdownTest_1.0/Markdown Documentation - Basics.html
|
79
|
+
- test/MarkdownTest_1.0/Markdown Documentation - Basics.out
|
78
80
|
- test/MarkdownTest_1.0/Markdown Documentation - Basics.text
|
79
81
|
- test/MarkdownTest_1.0/Markdown Documentation - Syntax.html
|
82
|
+
- test/MarkdownTest_1.0/Markdown Documentation - Syntax.out
|
80
83
|
- test/MarkdownTest_1.0/Markdown Documentation - Syntax.text
|
81
84
|
- test/MarkdownTest_1.0/Nested blockquotes.html
|
82
85
|
- test/MarkdownTest_1.0/Nested blockquotes.text
|
@@ -121,6 +124,7 @@ test_files:
|
|
121
124
|
- test/test-markdown.rb
|
122
125
|
- test/test-match-data.rb
|
123
126
|
- test/test-readme-example.rb
|
127
|
+
- test/test-regexp.rb
|
124
128
|
- test/test-tables.rb
|
125
129
|
- test/test-tartan-markdown.rb
|
126
130
|
- test/test-tartan.rb
|