asciidoctor 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of asciidoctor might be problematic. Click here for more details.
- data/LICENSE +1 -1
- data/README.md +136 -55
- data/asciidoctor.gemspec +10 -4
- data/lib/asciidoctor.rb +33 -7
- data/lib/asciidoctor/block.rb +161 -24
- data/lib/asciidoctor/debug.rb +12 -1
- data/lib/asciidoctor/document.rb +31 -630
- data/lib/asciidoctor/lexer.rb +654 -0
- data/lib/asciidoctor/list_item.rb +30 -0
- data/lib/asciidoctor/reader.rb +236 -0
- data/lib/asciidoctor/render_templates.rb +3 -3
- data/lib/asciidoctor/renderer.rb +22 -2
- data/lib/asciidoctor/version.rb +1 -1
- data/test/attributes_test.rb +88 -0
- data/test/document_test.rb +2 -8
- data/test/lexer_test.rb +12 -0
- data/test/list_elements_test.rb +1 -1
- data/test/reader_test.rb +56 -0
- data/test/test_helper.rb +7 -2
- data/test/text_test.rb +26 -20
- metadata +113 -95
data/test/lexer_test.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class LexerTest < Test::Unit::TestCase
|
4
|
+
# setup for test
|
5
|
+
def setup
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_is_section_heading
|
9
|
+
assert Asciidoctor::Lexer.is_section_heading?("AsciiDoc Home Page", "==================")
|
10
|
+
assert Asciidoctor::Lexer.is_section_heading?("=== AsciiDoc Home Page")
|
11
|
+
end
|
12
|
+
end
|
data/test/list_elements_test.rb
CHANGED
@@ -29,7 +29,7 @@ context "Bulleted lists (:ulist)" do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
test "nested elements (2) with asterisks" do
|
32
|
-
output = render_string("
|
32
|
+
output = render_string("* Foo\n** Boo\n* Blech")
|
33
33
|
assert_xpath '//ul', output, 2
|
34
34
|
assert_xpath '//ul/li', output, 3
|
35
35
|
end
|
data/test/reader_test.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ReaderTest < Test::Unit::TestCase
|
4
|
+
# setup for test
|
5
|
+
def setup
|
6
|
+
@src_data = File.readlines(sample_doc_path(:asciidoc_index))
|
7
|
+
@reader = Asciidoctor::Reader.new @src_data
|
8
|
+
end
|
9
|
+
|
10
|
+
context "has_lines?" do
|
11
|
+
test "returns false for empty document" do
|
12
|
+
assert ! Asciidoctor::Reader.new.has_lines?
|
13
|
+
end
|
14
|
+
|
15
|
+
test "returns true with lines remaining" do
|
16
|
+
assert @reader.has_lines?, "Yo, didn't work"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "with source data loaded" do
|
21
|
+
test "get_line returns next line" do
|
22
|
+
assert_equal @src_data[0], @reader.get_line
|
23
|
+
end
|
24
|
+
|
25
|
+
test "get_line consumes the line it returns" do
|
26
|
+
reader = Asciidoctor::Reader.new(["foo", "bar"])
|
27
|
+
_ = reader.get_line
|
28
|
+
second = reader.get_line
|
29
|
+
assert_equal "bar", second
|
30
|
+
end
|
31
|
+
|
32
|
+
test "peek_line does not consume the line it returns" do
|
33
|
+
reader = Asciidoctor::Reader.new(["foo", "bar"])
|
34
|
+
_ = reader.peek_line
|
35
|
+
second = reader.peek_line
|
36
|
+
assert_equal "foo", second
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
test "unshift puts line onto Reader instance for the next get_line" do
|
41
|
+
reader = Asciidoctor::Reader.new(["foo"])
|
42
|
+
reader.unshift("bar")
|
43
|
+
assert_equal "bar", reader.get_line
|
44
|
+
assert_equal "foo", reader.get_line
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_grab_lines_until
|
48
|
+
pending "Not tested yet"
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_sanitize_attribute_name
|
52
|
+
assert_equal 'foobar', @reader.sanitize_attribute_name("Foo Bar")
|
53
|
+
assert_equal 'foo', @reader.sanitize_attribute_name("foo")
|
54
|
+
assert_equal 'foo3-bar', @reader.sanitize_attribute_name("Foo 3^ # - Bar[")
|
55
|
+
end
|
56
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -6,8 +6,9 @@ require "#{File.expand_path(File.dirname(__FILE__))}/../lib/asciidoctor.rb"
|
|
6
6
|
require 'mocha'
|
7
7
|
require 'htmlentities'
|
8
8
|
require 'nokogiri'
|
9
|
+
require 'pending'
|
9
10
|
|
10
|
-
ENV['SUPPRESS_DEBUG']
|
11
|
+
ENV['SUPPRESS_DEBUG'] ||= 'true'
|
11
12
|
|
12
13
|
class Test::Unit::TestCase
|
13
14
|
def sample_doc_path(name)
|
@@ -60,8 +61,12 @@ class Test::Unit::TestCase
|
|
60
61
|
end
|
61
62
|
end
|
62
63
|
|
64
|
+
def document_from_string(src)
|
65
|
+
Asciidoctor::Document.new(src.split("\n"))
|
66
|
+
end
|
67
|
+
|
63
68
|
def render_string(src)
|
64
|
-
|
69
|
+
document_from_string(src).render
|
65
70
|
end
|
66
71
|
end
|
67
72
|
|
data/test/text_test.rb
CHANGED
@@ -1,23 +1,25 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
context "Text" do
|
4
|
+
test 'escaped text markup' do
|
5
|
+
pending "Not done yet"
|
6
|
+
end
|
7
|
+
|
4
8
|
test "line breaks" do
|
5
9
|
assert_xpath "//br", render_string("Well this is +\njust fine and dandy, isn't it?"), 1
|
6
10
|
end
|
7
11
|
|
8
|
-
test "
|
12
|
+
test "single- and double-quoted text" do
|
9
13
|
rendered = render_string("``Where?,'' she said, flipping through her copy of `The New Yorker.'")
|
10
|
-
assert_match /”/, rendered
|
11
|
-
assert_match /&
|
12
|
-
assert_match /’/, rendered
|
13
|
-
assert_match /‘/, rendered
|
14
|
+
assert_match /“Where\?,”/, rendered
|
15
|
+
assert_match /‘The New Yorker.’/, rendered
|
14
16
|
end
|
15
17
|
|
16
18
|
test "separator" do
|
17
19
|
assert_xpath "//hr", render_string("This is separated.\n\n''''\n\n...from this!"), 1
|
18
20
|
end
|
19
21
|
|
20
|
-
test "emphasized
|
22
|
+
test "emphasized text" do
|
21
23
|
assert_xpath "//em", render_string("An 'emphatic' no")
|
22
24
|
end
|
23
25
|
|
@@ -25,47 +27,51 @@ context "Text" do
|
|
25
27
|
assert_no_match /#/, render_string("An #unquoted# word")
|
26
28
|
end
|
27
29
|
|
28
|
-
|
30
|
+
test "backtick-escaped text followed by single-quoted text" do
|
31
|
+
assert_match /<tt>foo<\/tt>/, render_string(%Q(run `foo` 'dog'))
|
32
|
+
end
|
33
|
+
|
34
|
+
context "basic styling" do
|
29
35
|
setup do
|
30
36
|
@rendered = render_string("A *BOLD* word. An _italic_ word. A +mono+ word. ^superscript!^ and some ~subscript~.")
|
31
37
|
end
|
32
38
|
|
33
|
-
test "
|
34
|
-
assert_xpath "//strong", @rendered
|
39
|
+
test "strong" do
|
40
|
+
assert_xpath "//strong", @rendered
|
35
41
|
end
|
36
42
|
|
37
43
|
test "italic" do
|
38
|
-
assert_xpath "//em", @rendered
|
44
|
+
assert_xpath "//em", @rendered
|
39
45
|
end
|
40
46
|
|
41
47
|
test "monospaced" do
|
42
|
-
assert_xpath "//tt", @rendered
|
48
|
+
assert_xpath "//tt", @rendered
|
43
49
|
end
|
44
50
|
|
45
51
|
test "superscript" do
|
46
|
-
assert_xpath "//sup", @rendered
|
52
|
+
assert_xpath "//sup", @rendered
|
47
53
|
end
|
48
54
|
|
49
55
|
test "subscript" do
|
50
|
-
assert_xpath "//sub", @rendered
|
56
|
+
assert_xpath "//sub", @rendered
|
51
57
|
end
|
52
58
|
|
53
59
|
test "backticks" do
|
54
60
|
assert_xpath "//tt", render_string("This is `totally cool`.")
|
55
61
|
end
|
56
62
|
|
57
|
-
test "
|
63
|
+
test "nested styles" do
|
58
64
|
rendered = render_string("Winning *big _time_* in the +city *boyeeee*+.")
|
59
|
-
|
65
|
+
|
60
66
|
assert_xpath "//strong/em", rendered
|
61
67
|
assert_xpath "//tt/strong", rendered
|
62
68
|
end
|
63
69
|
|
64
|
-
test "
|
70
|
+
test "unconstrained quotes" do
|
65
71
|
rendered_chars = render_string("**B**__I__++M++")
|
66
|
-
assert_xpath "//strong", rendered_chars
|
67
|
-
assert_xpath "//em", rendered_chars
|
68
|
-
assert_xpath "//tt", rendered_chars
|
72
|
+
assert_xpath "//strong", rendered_chars
|
73
|
+
assert_xpath "//em", rendered_chars
|
74
|
+
assert_xpath "//tt", rendered_chars
|
69
75
|
end
|
70
|
-
end
|
76
|
+
end
|
71
77
|
end
|
metadata
CHANGED
@@ -1,103 +1,122 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Ryan Waldron
|
14
9
|
- Jeremy McAnally
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
dependencies:
|
22
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2012-08-03 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
23
16
|
name: json
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
26
18
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
34
23
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: nokogiri
|
38
24
|
prerelease: false
|
39
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
26
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: tilt
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
48
39
|
type: :runtime
|
49
|
-
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: mocha
|
52
40
|
prerelease: false
|
53
|
-
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
54
42
|
none: false
|
55
|
-
requirements:
|
56
|
-
- -
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: mocha
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
62
55
|
type: :development
|
63
|
-
version_requirements: *id003
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
name: nokogiri
|
66
56
|
prerelease: false
|
67
|
-
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: nokogiri
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
68
66
|
none: false
|
69
|
-
requirements:
|
70
|
-
- -
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
segments:
|
74
|
-
- 0
|
75
|
-
version: "0"
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
76
71
|
type: :development
|
77
|
-
|
78
|
-
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
79
80
|
name: htmlentities
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
80
88
|
prerelease: false
|
81
|
-
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: pending
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
82
98
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
90
103
|
type: :development
|
91
|
-
|
92
|
-
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: A pure Ruby processor to turn Asciidoc-formatted documents into HTML
|
112
|
+
(and, eventually, other formats perhaps).
|
93
113
|
email: rew@erebor.com
|
94
|
-
executables:
|
114
|
+
executables:
|
95
115
|
- asciidoctor
|
96
116
|
extensions: []
|
97
|
-
|
98
|
-
extra_rdoc_files:
|
117
|
+
extra_rdoc_files:
|
99
118
|
- LICENSE
|
100
|
-
files:
|
119
|
+
files:
|
101
120
|
- LICENSE
|
102
121
|
- README.md
|
103
122
|
- Rakefile
|
@@ -108,60 +127,59 @@ files:
|
|
108
127
|
- lib/asciidoctor/debug.rb
|
109
128
|
- lib/asciidoctor/document.rb
|
110
129
|
- lib/asciidoctor/errors.rb
|
130
|
+
- lib/asciidoctor/lexer.rb
|
111
131
|
- lib/asciidoctor/list_item.rb
|
132
|
+
- lib/asciidoctor/reader.rb
|
112
133
|
- lib/asciidoctor/render_templates.rb
|
113
134
|
- lib/asciidoctor/renderer.rb
|
114
135
|
- lib/asciidoctor/section.rb
|
115
136
|
- lib/asciidoctor/string.rb
|
116
137
|
- lib/asciidoctor/version.rb
|
117
138
|
- noof.rb
|
139
|
+
- test/attributes_test.rb
|
118
140
|
- test/document_test.rb
|
119
141
|
- test/fixtures/asciidoc.txt
|
120
142
|
- test/fixtures/asciidoc_index.txt
|
121
143
|
- test/fixtures/ascshort.txt
|
122
144
|
- test/fixtures/list_elements.asciidoc
|
123
145
|
- test/headers_test.rb
|
146
|
+
- test/lexer_test.rb
|
124
147
|
- test/list_elements_test.rb
|
125
148
|
- test/paragraphs_test.rb
|
149
|
+
- test/reader_test.rb
|
126
150
|
- test/test_helper.rb
|
127
151
|
- test/text_test.rb
|
128
|
-
has_rdoc: true
|
129
152
|
homepage: http://github.com/erebor/asciidoctor
|
130
153
|
licenses: []
|
131
|
-
|
132
154
|
post_install_message:
|
133
|
-
rdoc_options:
|
155
|
+
rdoc_options:
|
134
156
|
- --charset=UTF-8
|
135
|
-
require_paths:
|
157
|
+
require_paths:
|
136
158
|
- lib
|
137
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
159
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
160
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
143
|
-
|
144
|
-
- 0
|
145
|
-
version: "0"
|
146
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - ! '>='
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '0'
|
165
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
166
|
none: false
|
148
|
-
requirements:
|
149
|
-
- -
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
|
152
|
-
segments:
|
153
|
-
- 0
|
154
|
-
version: "0"
|
167
|
+
requirements:
|
168
|
+
- - ! '>='
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0'
|
155
171
|
requirements: []
|
156
|
-
|
157
172
|
rubyforge_project: asciidoctor
|
158
|
-
rubygems_version: 1.
|
173
|
+
rubygems_version: 1.8.23
|
159
174
|
signing_key:
|
160
175
|
specification_version: 2
|
161
176
|
summary: Pure Ruby Asciidoc to HTML rendering.
|
162
|
-
test_files:
|
177
|
+
test_files:
|
178
|
+
- test/attributes_test.rb
|
163
179
|
- test/document_test.rb
|
164
180
|
- test/headers_test.rb
|
181
|
+
- test/lexer_test.rb
|
165
182
|
- test/list_elements_test.rb
|
166
183
|
- test/paragraphs_test.rb
|
184
|
+
- test/reader_test.rb
|
167
185
|
- test/text_test.rb
|