asuka 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +6 -0
- data/LICENSE +20 -0
- data/README.rdoc +17 -0
- data/Rakefile +44 -0
- data/VERSION +1 -0
- data/bin/asuka +7 -0
- data/lib/asuka.rb +16 -0
- data/lib/asuka/accumulator.rb +27 -0
- data/lib/asuka/document.rb +122 -0
- data/lib/asuka/formatter.rb +53 -0
- data/lib/asuka/line_formatter.rb +24 -0
- data/lib/asuka/parser.rb +42 -0
- data/lib/asuka/rules.rb +106 -0
- data/samples/samples.asuka +98 -0
- data/spec/integration/parser_spec.rb +297 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/unit/accumulator_spec.rb +79 -0
- data/spec/unit/blockquote_spec.rb +25 -0
- data/spec/unit/document_spec.rb +59 -0
- data/spec/unit/formatter_spec.rb +93 -0
- data/spec/unit/header_spec.rb +12 -0
- data/spec/unit/line_formatter_spec.rb +132 -0
- data/spec/unit/line_group_spec.rb +14 -0
- data/spec/unit/paragraph_spec.rb +25 -0
- data/spec/unit/rule_spec.rb +11 -0
- data/spec/unit/unordered_list_spec.rb +25 -0
- metadata +114 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Blockquote" do
|
4
|
+
describe "when it contains 1 line" do
|
5
|
+
before do
|
6
|
+
@lines = ["text"]
|
7
|
+
@blockquote = Asuka::Blockquote.new(@lines)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should convert to correct html" do
|
11
|
+
@blockquote.to_html.should == "<blockquote>text</blockquote>"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "when it contains many lines" do
|
16
|
+
before do
|
17
|
+
@lines = ["some","more","text"]
|
18
|
+
@blockquote = Asuka::Blockquote.new(@lines)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should convert to correct html (with <br/>)" do
|
22
|
+
@blockquote.to_html.should == "<blockquote>some<br/>\nmore<br/>\ntext</blockquote>"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Document" do
|
4
|
+
describe "when passing a parser" do
|
5
|
+
before do
|
6
|
+
@lines = ["some","more","text"]
|
7
|
+
@parser = mock
|
8
|
+
@document = Asuka::Document.new(@lines, @parser)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should delegate to parser" do
|
12
|
+
@parser.should_receive(:parse).with(@lines).and_return([])
|
13
|
+
@document.to_html
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "when using the default parser" do
|
18
|
+
before do
|
19
|
+
@lines = ["some","more","text"]
|
20
|
+
@document = Asuka::Document.new(@lines)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should delegate to parser" do
|
24
|
+
@document.to_html.should == "<p>some<br/>\nmore<br/>\ntext</p>"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "when passing a customized parser" do
|
29
|
+
before do
|
30
|
+
@formatter = Asuka::Formatter.new
|
31
|
+
class << @formatter
|
32
|
+
def make_link(text, href, tags={})
|
33
|
+
tags = tags.merge(:href => href.strip)
|
34
|
+
tags[:target] = "_blank" if href !~ /^http:\/\/nowhere.com/
|
35
|
+
|
36
|
+
tags_to_attrs = tags.sort_by { |name, value| name.to_s }.
|
37
|
+
map { |name, value| %Q{ #{name}="#{value}"} }
|
38
|
+
|
39
|
+
"<a#{tags_to_attrs}>#{text.strip}</a>"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
@line_formatter = Asuka::LineFormatter.new(@formatter)
|
44
|
+
@parser = Asuka::Parser.new(@line_formatter)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should not affect internal links" do
|
48
|
+
lines = ["some","more [internal link][http://nowhere.com] text"]
|
49
|
+
@document = Asuka::Document.new(lines, @parser)
|
50
|
+
@document.to_html.should == %Q{<p>some<br/>\nmore <a href="http://nowhere.com">internal link</a> text</p>}
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should affect external links" do
|
54
|
+
lines = ["some","more [external link][http://somewhere.com] text"]
|
55
|
+
@document = Asuka::Document.new(lines, @parser)
|
56
|
+
@document.to_html.should == %Q{<p>some<br/>\nmore <a href="http://somewhere.com" target="_blank">external link</a> text</p>}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
include Asuka
|
4
|
+
|
5
|
+
describe "Formatter" do
|
6
|
+
before do
|
7
|
+
@formatter = Formatter.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "bold" do
|
11
|
+
it "applies bold format" do
|
12
|
+
@formatter.bold("a **delicious** pie").should == "a <strong>delicious</strong> pie"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "disregards irrelevant spacing" do
|
16
|
+
@formatter.bold(" a ** delicious ** pie ").should == " a <strong> delicious </strong> pie "
|
17
|
+
end
|
18
|
+
|
19
|
+
it "doesn't get intercept italic" do
|
20
|
+
@formatter.bold("a *delicious* pie").should == "a *delicious* pie"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "doesn't choke on unbalanced asterisks" do
|
24
|
+
@formatter.bold("a **delicious*** pie").should == "a <strong>delicious</strong>* pie"
|
25
|
+
@formatter.bold("a ***delicious** pie").should == "a *<strong>delicious</strong> pie"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "italic" do
|
30
|
+
it "applies italic format" do
|
31
|
+
@formatter.italic("a *delicious* pie").should == "a <em>delicious</em> pie"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "disregards irrelevant spacing" do
|
35
|
+
@formatter.italic(" a * delicious * pie ").should == " a <em> delicious </em> pie "
|
36
|
+
end
|
37
|
+
|
38
|
+
it "doesn't mind bold" do
|
39
|
+
@formatter.italic("a **delicious** pie").should == "a *<em>delicious</em>* pie"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "doesn't choke on unbalanced asterisks" do
|
43
|
+
@formatter.italic("a *delicious** pie").should == "a <em>delicious</em>* pie"
|
44
|
+
@formatter.italic("a **delicious* pie").should == "a *<em>delicious</em> pie"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "named_link" do
|
49
|
+
it "applies named_link format" do
|
50
|
+
result = "a <a href=\"http://delicious.com\">delicious</a> pie"
|
51
|
+
@formatter.named_link("a [delicious][http://delicious.com] pie").should == result
|
52
|
+
@formatter.named_link("a [http://delicious.com][delicious] pie").should == result
|
53
|
+
end
|
54
|
+
|
55
|
+
it "applies named_link format to https links" do
|
56
|
+
result = "a <a href=\"https://delicious.com\">delicious</a> pie"
|
57
|
+
@formatter.named_link("a [delicious][https://delicious.com] pie").should == result
|
58
|
+
@formatter.named_link("a [https://delicious.com][delicious] pie").should == result
|
59
|
+
end
|
60
|
+
|
61
|
+
it "applies named_link format (multi-words)" do
|
62
|
+
result = "a <a href=\"http://delicious.com\">very delicious</a> pie"
|
63
|
+
@formatter.named_link("a [very delicious][http://delicious.com] pie").should == result
|
64
|
+
@formatter.named_link("a [http://delicious.com][very delicious] pie").should == result
|
65
|
+
end
|
66
|
+
|
67
|
+
it "trims internal extra spacing" do
|
68
|
+
result = "a <a href=\"http://delicious.com\">delicious</a> pie"
|
69
|
+
@formatter.named_link("a [ delicious ][ http://delicious.com ] pie").should == result
|
70
|
+
@formatter.named_link("a [ http://delicious.com ][ delicious ] pie").should == result
|
71
|
+
end
|
72
|
+
|
73
|
+
it "ignores http:// if preceded by text" do
|
74
|
+
@formatter.named_link("a [delicious][link http://delicious.com] pie").should == "a [delicious][link http://delicious.com] pie"
|
75
|
+
@formatter.named_link("a [link http://delicious.com][delicious] pie").should == "a [link http://delicious.com][delicious] pie"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "ignores http:// if followed by text" do
|
79
|
+
@formatter.named_link("a [delicious][http://delicious.com link] pie").should == "a [delicious][http://delicious.com link] pie"
|
80
|
+
@formatter.named_link("a [http://delicious.com link][delicious] pie").should == "a [http://delicious.com link][delicious] pie"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "ignores javascript:// links" do
|
84
|
+
@formatter.named_link("a [delicious][javascript://delicious.com] pie").should == "a [delicious][javascript://delicious.com] pie"
|
85
|
+
@formatter.named_link("a [javascript://delicious.com][delicious] pie").should == "a [javascript://delicious.com][delicious] pie"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "chokes on external extra spacing" do
|
89
|
+
@formatter.named_link("a [delicious] [http://delicious.com] pie").should == "a [delicious] [http://delicious.com] pie"
|
90
|
+
@formatter.named_link("a [http://delicious.com] [delicious] pie").should == "a [http://delicious.com] [delicious] pie"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Header" do
|
4
|
+
before do
|
5
|
+
@line = "text"
|
6
|
+
@header = Asuka::Header.new(@line, 2)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should convert to correct html" do
|
10
|
+
@header.to_html.should == "<h2>text</h2>"
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "LineFormatter" do
|
4
|
+
before do
|
5
|
+
@formatter = Asuka::Formatter.new
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "that is brand new" do
|
9
|
+
before do
|
10
|
+
@line = "a *magic* and **delicious** pie"
|
11
|
+
@formatter = stub
|
12
|
+
@lf = Asuka::LineFormatter.new(@formatter)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "starts out empty" do
|
16
|
+
@lf.steps.should be_empty
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should not apply any format" do
|
20
|
+
@lf.format(@line).should == @line
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "that contains the default formatter" do
|
25
|
+
before do
|
26
|
+
@line = "a *magic* and **delicious** pie"
|
27
|
+
@lf = Asuka::LineFormatter.new(@formatter)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should import the formatter's default_steps" do
|
31
|
+
@lf.steps.size.should == @formatter.default_steps.size
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should apply formats" do
|
35
|
+
@lf.format(@line).should == "a <em>magic</em> and <strong>delicious</strong> pie"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "with a custom rule" do
|
40
|
+
before do
|
41
|
+
@line = "a *magic* and **delicious** pie"
|
42
|
+
|
43
|
+
class << @formatter
|
44
|
+
def no_star(line)
|
45
|
+
line.gsub(/\*/, '')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
@lf = Asuka::LineFormatter.new(@formatter, :no_star)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should have 1 rule" do
|
53
|
+
@lf.steps.size.should == 1
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should apply that rule" do
|
57
|
+
@lf.format(@line).should == "a magic and delicious pie"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "with the bold rule" do
|
62
|
+
before do
|
63
|
+
@line = "a *magic* and **delicious** pie"
|
64
|
+
@lf = Asuka::LineFormatter.new(@formatter, :bold)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should apply bold format" do
|
68
|
+
@lf.format(@line).should == "a *magic* and <strong>delicious</strong> pie"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should not choke on bold party" do
|
72
|
+
line = "a ******magic and delicious****** pie"
|
73
|
+
@lf.format(line).should == "a ****<strong>magic and delicious</strong>**** pie"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "with the italic rule" do
|
78
|
+
before do
|
79
|
+
@line = "a *magic* and **delicious** pie"
|
80
|
+
@lf = Asuka::LineFormatter.new(@formatter, :italic)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should apply italic format" do
|
84
|
+
@lf.format(@line).should == "a <em>magic</em> and *<em>delicious</em>* pie"
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should not choke on italic party" do
|
88
|
+
line = "a ******magic and delicious****** pie"
|
89
|
+
@lf.format(line).should == "a *****<em>magic and delicious</em>***** pie"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "the DEFAULT_LINE_FORMATTER one" do
|
94
|
+
before do
|
95
|
+
@line = "a *magic* and **delicious** pie"
|
96
|
+
@lf = Asuka::DEFAULT_LINE_FORMATTER
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should not be empty" do
|
100
|
+
@lf.steps.should_not be_empty
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should apply bold and italic format" do
|
104
|
+
@lf.format(@line).should == "a <em>magic</em> and <strong>delicious</strong> pie"
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should apply bold_italic format" do
|
108
|
+
line = "a ***magic and delicious*** pie"
|
109
|
+
@lf.format(line).should == "a <em><strong>magic and delicious</strong></em> pie"
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should apply named_link format" do
|
113
|
+
line = "a [magic and delicious][http://google.com] pie"
|
114
|
+
@lf.format(line).should == "a <a href=\"http://google.com\">magic and delicious</a> pie"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "the DEFAULT_PRE_LINE_FORMATTER one" do
|
119
|
+
before do
|
120
|
+
@line = " a magic & delicious pie > none "
|
121
|
+
@lf = Asuka::DEFAULT_PRE_LINE_FORMATTER
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should not be empty" do
|
125
|
+
@lf.steps.should_not be_empty
|
126
|
+
end
|
127
|
+
|
128
|
+
it "should apply strip and html_escape" do
|
129
|
+
@lf.format(@line).should == "a magic & delicious pie > none"
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "LineGroup" do
|
4
|
+
before do
|
5
|
+
@lines = ["some","text"]
|
6
|
+
@doc = Asuka::LineGroup.new(@lines)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "doesn't allow to_html (abstract)" do
|
10
|
+
lambda {
|
11
|
+
@doc.to_html
|
12
|
+
}.should raise_error(NotImplementedError)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "Paragraph" do
|
4
|
+
describe "when it contains 1 line" do
|
5
|
+
before do
|
6
|
+
@lines = ["text"]
|
7
|
+
@paragraph = Asuka::Paragraph.new(@lines)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should convert to correct html" do
|
11
|
+
@paragraph.to_html.should == "<p>text</p>"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "when it contains many lines" do
|
16
|
+
before do
|
17
|
+
@lines = ["some","more","text"]
|
18
|
+
@paragraph = Asuka::Paragraph.new(@lines)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should convert to correct html (with <br/>)" do
|
22
|
+
@paragraph.to_html.should == "<p>some<br/>\nmore<br/>\ntext</p>"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe "UnorderedList" do
|
4
|
+
describe "when it contains 1 line" do
|
5
|
+
before do
|
6
|
+
@lines = ["text"]
|
7
|
+
@list = Asuka::UnorderedList.new(@lines)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should convert to correct html" do
|
11
|
+
@list.to_html.should == "<ul>\n<li>text</li>\n</ul>"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "when it contains many lines" do
|
16
|
+
before do
|
17
|
+
@lines = ["some","more","text"]
|
18
|
+
@list = Asuka::UnorderedList.new(@lines)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should convert to correct html (with <br/>)" do
|
22
|
+
@list.to_html.should == "<ul>\n<li>some</li>\n<li>more</li>\n<li>text</li>\n</ul>"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: asuka
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 5
|
8
|
+
- 3
|
9
|
+
version: 0.5.3
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Jonathan Palardy
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-04-15 00:00:00 -07:00
|
18
|
+
default_executable: asuka
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 2
|
30
|
+
- 9
|
31
|
+
version: 1.2.9
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
description: Markdown and textile -inspired markup that's XSS safe.
|
35
|
+
email: jonathan@fetlife.com
|
36
|
+
executables:
|
37
|
+
- asuka
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files:
|
41
|
+
- LICENSE
|
42
|
+
- README.rdoc
|
43
|
+
files:
|
44
|
+
- .document
|
45
|
+
- .gitignore
|
46
|
+
- LICENSE
|
47
|
+
- README.rdoc
|
48
|
+
- Rakefile
|
49
|
+
- VERSION
|
50
|
+
- bin/asuka
|
51
|
+
- lib/asuka.rb
|
52
|
+
- lib/asuka/accumulator.rb
|
53
|
+
- lib/asuka/document.rb
|
54
|
+
- lib/asuka/formatter.rb
|
55
|
+
- lib/asuka/line_formatter.rb
|
56
|
+
- lib/asuka/parser.rb
|
57
|
+
- lib/asuka/rules.rb
|
58
|
+
- samples/samples.asuka
|
59
|
+
- spec/integration/parser_spec.rb
|
60
|
+
- spec/spec.opts
|
61
|
+
- spec/spec_helper.rb
|
62
|
+
- spec/unit/accumulator_spec.rb
|
63
|
+
- spec/unit/blockquote_spec.rb
|
64
|
+
- spec/unit/document_spec.rb
|
65
|
+
- spec/unit/formatter_spec.rb
|
66
|
+
- spec/unit/header_spec.rb
|
67
|
+
- spec/unit/line_formatter_spec.rb
|
68
|
+
- spec/unit/line_group_spec.rb
|
69
|
+
- spec/unit/paragraph_spec.rb
|
70
|
+
- spec/unit/rule_spec.rb
|
71
|
+
- spec/unit/unordered_list_spec.rb
|
72
|
+
has_rdoc: true
|
73
|
+
homepage: http://fetlife.com
|
74
|
+
licenses: []
|
75
|
+
|
76
|
+
post_install_message:
|
77
|
+
rdoc_options:
|
78
|
+
- --charset=UTF-8
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
segments:
|
86
|
+
- 0
|
87
|
+
version: "0"
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
segments:
|
93
|
+
- 0
|
94
|
+
version: "0"
|
95
|
+
requirements: []
|
96
|
+
|
97
|
+
rubyforge_project:
|
98
|
+
rubygems_version: 1.3.6
|
99
|
+
signing_key:
|
100
|
+
specification_version: 3
|
101
|
+
summary: Safe and pleasant text-to-HTML converter.
|
102
|
+
test_files:
|
103
|
+
- spec/integration/parser_spec.rb
|
104
|
+
- spec/spec_helper.rb
|
105
|
+
- spec/unit/accumulator_spec.rb
|
106
|
+
- spec/unit/blockquote_spec.rb
|
107
|
+
- spec/unit/document_spec.rb
|
108
|
+
- spec/unit/formatter_spec.rb
|
109
|
+
- spec/unit/header_spec.rb
|
110
|
+
- spec/unit/line_formatter_spec.rb
|
111
|
+
- spec/unit/line_group_spec.rb
|
112
|
+
- spec/unit/paragraph_spec.rb
|
113
|
+
- spec/unit/rule_spec.rb
|
114
|
+
- spec/unit/unordered_list_spec.rb
|