bluefeather 0.10

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.
Files changed (46) hide show
  1. data/Rakefile.rb +168 -0
  2. data/bin/bluefeather +4 -0
  3. data/doc/author-and-license.bfdoc +16 -0
  4. data/doc/base.css +135 -0
  5. data/doc/basic-usage.bfdoc +265 -0
  6. data/doc/black.css +130 -0
  7. data/doc/class-reference.bfdoc +105 -0
  8. data/doc/difference.bfdoc +63 -0
  9. data/doc/en/author-and-license.bfdoc +20 -0
  10. data/doc/en/base.css +136 -0
  11. data/doc/en/basic-usage.bfdoc +266 -0
  12. data/doc/en/black.css +130 -0
  13. data/doc/en/class-reference.bfdoc +6 -0
  14. data/doc/en/difference.bfdoc +72 -0
  15. data/doc/en/format-extension.bfdoc +324 -0
  16. data/doc/en/index.bfdoc +41 -0
  17. data/doc/en/metadata-reference.bfdoc +7 -0
  18. data/doc/format-extension.bfdoc +325 -0
  19. data/doc/index.bfdoc +36 -0
  20. data/doc/metadata-reference.bfdoc +86 -0
  21. data/lib/bluefeather.rb +1872 -0
  22. data/lib/bluefeather/cui.rb +207 -0
  23. data/license/gpl-2.0.txt +339 -0
  24. data/license/gpl.ja.txt +416 -0
  25. data/original-tests/00_Class.tests.rb +42 -0
  26. data/original-tests/05_Markdown.tests.rb +1530 -0
  27. data/original-tests/10_Bug.tests.rb +44 -0
  28. data/original-tests/15_Contrib.tests.rb +130 -0
  29. data/original-tests/bftestcase.rb +278 -0
  30. data/original-tests/data/antsugar.txt +34 -0
  31. data/original-tests/data/ml-announce.txt +17 -0
  32. data/original-tests/data/re-overflow.txt +67 -0
  33. data/original-tests/data/re-overflow2.txt +281 -0
  34. data/readme_en.txt +37 -0
  35. data/readme_ja.txt +33 -0
  36. data/spec/auto-link.rb +100 -0
  37. data/spec/code-block.rb +91 -0
  38. data/spec/dl.rb +182 -0
  39. data/spec/escape-char.rb +18 -0
  40. data/spec/footnote.rb +34 -0
  41. data/spec/header-id.rb +38 -0
  42. data/spec/lib/common.rb +103 -0
  43. data/spec/table.rb +70 -0
  44. data/spec/toc.rb +64 -0
  45. data/spec/warning.rb +61 -0
  46. metadata +99 -0
@@ -0,0 +1,103 @@
1
+ begin
2
+ require 'rubygems'
3
+ rescue
4
+ end
5
+
6
+ require 'pathname'
7
+ $LOAD_PATH.unshift Pathname.new(__FILE__).dirname.parent.parent + 'lib/'
8
+
9
+ require 'bluefeather'
10
+ require 'hpricot'
11
+
12
+ module HpricotMatcher
13
+ class HaveElement
14
+ def initialize(selector)
15
+ @selector = selector
16
+ end
17
+
18
+ def description
19
+ "have element"
20
+ end
21
+
22
+ def matches?(target)
23
+ @target = target
24
+
25
+ return !(@target.search(@selector).empty?)
26
+ end
27
+
28
+ def failure_message
29
+ %Q|expected an element selected by '#{@selector}', got no element\n(html: #{@target.to_s.inspect})|
30
+ end
31
+
32
+ def negative_failure_message
33
+ %Q|expected no element selected by '#{@selector}', got an element\n(html: #{@target.to_s.inspect})|
34
+ end
35
+ end
36
+
37
+ class HaveElements
38
+ def initialize(number, selector)
39
+ @number, @selector = number, selector
40
+ end
41
+
42
+ def description
43
+ "have elements"
44
+ end
45
+
46
+ def matches?(target)
47
+ @target = target
48
+
49
+ @found_number = @target.search(@selector).size
50
+ return @found_number == @number
51
+ end
52
+
53
+ def failure_message
54
+ %Q|expected #{@number} elements selected by '#{@selector}', got #{@found_number} elements\n(html: #{@target.to_s.inspect})|
55
+ end
56
+
57
+ def negative_failure_message
58
+ %Q|not expected #{@number} elements selected by '#{@selector}', got #{@found_number} elements\n(html: #{@target.to_s.inspect})|
59
+ end
60
+ end
61
+
62
+ end
63
+
64
+ # ex) doc.should have_element('div table')
65
+ def have_element(selector)
66
+ HpricotMatcher::HaveElement.new(selector)
67
+ end
68
+
69
+ alias have_element_as have_element
70
+
71
+ # ex) doc.should have_elements(3, 'p')
72
+ def have_elements(number, selector)
73
+ HpricotMatcher::HaveElements.new(number, selector)
74
+ end
75
+
76
+ alias have_elements_as have_elements
77
+
78
+
79
+
80
+ =begin
81
+ # new matcher
82
+ class String
83
+ def to_xml
84
+ REXML::Document.new("<xml>#{self}</xml>")
85
+ end
86
+
87
+ def xml_as?(other)
88
+ a = REXML::Document.new("<xml>#{self}</xml>")
89
+ b = REXML::Document.new("<xml>#{other}</xml>")
90
+
91
+ a == b
92
+ end
93
+ end
94
+
95
+ # comparable
96
+ module REXML
97
+ class Element
98
+ def ==(other)
99
+ text == other.text and attributes == other.attributes and children == other.children
100
+ end
101
+ end
102
+ end
103
+ =end
data/spec/table.rb ADDED
@@ -0,0 +1,70 @@
1
+ require 'pathname'
2
+ require(Pathname.new(__FILE__).parent + 'lib/common.rb')
3
+
4
+
5
+ describe 'Simple Table:' do
6
+ before(:each) do
7
+ @bf = BlueFeather::Parser.new
8
+
9
+ @html = @bf.parse_text(@src)
10
+ @doc = Hpricot(@html)
11
+ end
12
+
13
+ share_as :StandardTable do
14
+ specify "regexp matching" do
15
+ @src.should =~ BlueFeather::Parser::TableRegexp
16
+ end
17
+
18
+ specify "table overview" do
19
+ @doc.should have_elements(1, 'table')
20
+ end
21
+
22
+ specify "size 3x3" do
23
+ @doc.should have_elements(3, 'tr')
24
+ @doc.should have_elements(1, 'thead tr')
25
+ @doc.should have_elements(2, 'tbody tr')
26
+ @doc.should have_elements(3, 'thead tr th')
27
+ @doc.should have_elements(6, 'tbody tr td')
28
+ end
29
+
30
+ specify "alignment" do
31
+ @doc.search('tr').each do |tr|
32
+ cells = tr.search('th, td')
33
+ cells[0]['style'].should be_nil
34
+ cells[1]['style'].should == 'text-align: right'
35
+ cells[2]['style'].should == 'text-align: center'
36
+ end
37
+ end
38
+ end
39
+
40
+
41
+ describe 'no-doubleline' do
42
+ include StandardTable
43
+
44
+ before(:all) do
45
+ @src = "|h1|h2|h3\n|-|-:|:-:\n|d11|d21|d31\n|d12|d22|d32"
46
+ end
47
+ end
48
+
49
+
50
+
51
+ describe 'doubleline: ' do
52
+ include StandardTable
53
+
54
+ before(:all) do
55
+ @src = "|h1|h2|h3|\n|-|-:|:-:|\n|d11|d21|d31|\n|d12|d22|d32|"
56
+ end
57
+ end
58
+
59
+ describe 'inner space:' do
60
+ include StandardTable
61
+
62
+ before(:all) do
63
+ @src = "| h1 | h2 | h3 \n| - | -: | :-: \n| d11 | d21 | d31\n| d12 | d22 | d32"
64
+ end
65
+ end
66
+
67
+
68
+
69
+
70
+ end
data/spec/toc.rb ADDED
@@ -0,0 +1,64 @@
1
+ require 'pathname'
2
+ require(Pathname.new(__FILE__).parent + 'lib/common.rb')
3
+
4
+
5
+ describe 'TOC:' do
6
+ before(:each) do
7
+ @bf = BlueFeather::Parser.new
8
+ @html = @bf.parse_text(@src)
9
+ @doc = Hpricot(@html)
10
+ end
11
+
12
+
13
+ describe 'basic:' do
14
+ before(:all) do
15
+ @src = <<-MARKDOWN
16
+ {toc}
17
+
18
+ # h1 #
19
+ ## h2a ##
20
+ ## h2b ##
21
+ ### h3a ###
22
+ ### h3b ###
23
+ ### h3c ###
24
+ ## h2c ##
25
+ MARKDOWN
26
+ end
27
+
28
+ specify 'overview' do
29
+ @doc.should have_element('ul')
30
+ @doc.should have_elements(1, 'h1')
31
+ @doc.should have_elements(3, 'h2')
32
+ @doc.should have_elements(3, 'h3')
33
+ end
34
+
35
+ specify 'list structure' do
36
+ toc = @doc.at('ul')
37
+ toc['class'] = 'toc'
38
+
39
+ @doc.should have_elements(3, 'ul.toc > li')
40
+ @doc.should have_elements(1, 'ul.toc > li > ul')
41
+ @doc.should have_elements(3, 'ul.toc > li > ul > li')
42
+ end
43
+
44
+ specify 'list content' do
45
+ toc = @doc.at('ul')
46
+ toc['class'] = 'toc'
47
+
48
+ items1 = @doc.search('ul.toc > li')
49
+ items1[0].inner_text.should == 'h2a'
50
+ items1[2].inner_text.should == 'h2c'
51
+
52
+ items2 = @doc.search('ul.toc > li > ul > li')
53
+ items2[0].inner_text.should == 'h3a'
54
+ items2[1].inner_text.should == 'h3b'
55
+ items2[2].inner_text.should == 'h3c'
56
+ end
57
+
58
+ end
59
+
60
+
61
+
62
+
63
+
64
+ end
data/spec/warning.rb ADDED
@@ -0,0 +1,61 @@
1
+ require 'bluefeather'
2
+
3
+ describe 'Warning:' do
4
+ before(:all) do
5
+ @bf = BlueFeather::Parser.new
6
+ end
7
+
8
+ specify "header level" do
9
+ html, rs = @bf.parse_text_with_render_state('###### h6')
10
+ rs.warnings.size.should == 0
11
+
12
+ html, rs = @bf.parse_text_with_render_state('####### h7')
13
+ rs.warnings.size.should == 1
14
+ end
15
+
16
+
17
+ specify "header id" do
18
+ html, rs = @bf.parse_text_with_render_state('# header # {#legal}')
19
+ rs.warnings.size.should == 0
20
+
21
+ html, rs = @bf.parse_text_with_render_state('# header # {#99illegal}')
22
+ rs.warnings.size.should == 1
23
+
24
+ html, rs = @bf.parse_text_with_render_state('# header # {#ille?gal}')
25
+ rs.warnings.size.should == 1
26
+ end
27
+
28
+ specify "link id reference" do
29
+ html, rs = @bf.parse_text_with_render_state("[markdown][]\n\n[markdown]: -")
30
+ rs.warnings.size.should == 0
31
+
32
+ html, rs = @bf.parse_text_with_render_state("[unknown][]\n\n[markdown]: -")
33
+ rs.warnings.size.should == 1
34
+ end
35
+
36
+
37
+
38
+ specify "footnote id" do
39
+ html, rs = @bf.parse_text_with_render_state('[^markdown]: -')
40
+ rs.warnings.size.should == 0
41
+
42
+ html, rs = @bf.parse_text_with_render_state('[^mark?down]: -')
43
+ rs.warnings.size.should == 1
44
+ end
45
+
46
+ specify "footnote reference" do
47
+ html, rs = @bf.parse_text_with_render_state("[^1]\n\n[^1]: -")
48
+ rs.warnings.size.should == 0
49
+
50
+ html, rs = @bf.parse_text_with_render_state("[^unknown]")
51
+ rs.warnings.size.should == 1
52
+ end
53
+
54
+ specify "toc parameter" do
55
+ html, rs = @bf.parse_text_with_render_state("{toc:h2..}")
56
+ rs.warnings.size.should == 0
57
+
58
+ html, rs = @bf.parse_text_with_render_state("{toc:h21..}")
59
+ rs.warnings.size.should == 1
60
+ end
61
+ end
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bluefeather
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.10"
5
+ platform: ruby
6
+ authors:
7
+ - Dice
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-24 00:00:00 +09:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: BlueFeather is software for converting text written by extended Markdown to html. It is pair of command-line tool and pure Ruby library.
17
+ email: tetradice@gmail.com
18
+ executables:
19
+ - bluefeather
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - readme_en.txt
26
+ - readme_ja.txt
27
+ - Rakefile.rb
28
+ - bin/bluefeather
29
+ - lib/bluefeather.rb
30
+ - lib/bluefeather/cui.rb
31
+ - license/gpl-2.0.txt
32
+ - license/gpl.ja.txt
33
+ - spec/auto-link.rb
34
+ - spec/code-block.rb
35
+ - spec/dl.rb
36
+ - spec/escape-char.rb
37
+ - spec/footnote.rb
38
+ - spec/header-id.rb
39
+ - spec/lib
40
+ - spec/lib/common.rb
41
+ - spec/table.rb
42
+ - spec/toc.rb
43
+ - spec/warning.rb
44
+ - original-tests/00_Class.tests.rb
45
+ - original-tests/05_Markdown.tests.rb
46
+ - original-tests/10_Bug.tests.rb
47
+ - original-tests/15_Contrib.tests.rb
48
+ - original-tests/bftestcase.rb
49
+ - original-tests/data
50
+ - original-tests/data/antsugar.txt
51
+ - original-tests/data/ml-announce.txt
52
+ - original-tests/data/re-overflow.txt
53
+ - original-tests/data/re-overflow2.txt
54
+ - doc/author-and-license.bfdoc
55
+ - doc/base.css
56
+ - doc/basic-usage.bfdoc
57
+ - doc/black.css
58
+ - doc/class-reference.bfdoc
59
+ - doc/difference.bfdoc
60
+ - doc/en/author-and-license.bfdoc
61
+ - doc/en/base.css
62
+ - doc/en/basic-usage.bfdoc
63
+ - doc/en/black.css
64
+ - doc/en/class-reference.bfdoc
65
+ - doc/en/difference.bfdoc
66
+ - doc/en/format-extension.bfdoc
67
+ - doc/en/index.bfdoc
68
+ - doc/en/metadata-reference.bfdoc
69
+ - doc/format-extension.bfdoc
70
+ - doc/index.bfdoc
71
+ - doc/metadata-reference.bfdoc
72
+ has_rdoc: false
73
+ homepage: http://ruby.morphball.net/bluefeather/
74
+ post_install_message:
75
+ rdoc_options: []
76
+
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 1.8.1
84
+ version:
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ requirements: []
92
+
93
+ rubyforge_project: bluefeather
94
+ rubygems_version: 1.3.1
95
+ signing_key:
96
+ specification_version: 2
97
+ summary: Extend Markdown Converter
98
+ test_files: []
99
+