bluefeather 0.22 → 0.30

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,7 +18,7 @@
18
18
  <li><a href="http://ja.wikipedia.org/wiki/GNU_General_Public_License">Wikipedia - GNU General Public License</a></li>
19
19
  </ul>
20
20
 
21
- <p>BlueFeather への要望、ご意見、バグ報告などがありましたら、<a href="http://ruby.morphball.net/bluefeather/">BlueFeather 配布サイト</a>よりメッセージを送信していただくか、もしくは Dice(<a href="&#109;&#x61;&#105;&#x6C;&#116;&#111;:&#x74;&#x65;&#116;&#x72;&#x61;&#100;i&#x63;&#101;&#064;&#x67;&#x6D;a&#105;l&#x2E;&#x63;&#x6F;&#109;">&#x74;&#x65;&#116;&#x72;&#x61;&#100;i&#x63;&#101;&#064;&#x67;&#x6D;a&#105;l&#x2E;&#x63;&#x6F;&#109;</a>)までメールでご連絡していただけるよう、よろしくお願いします。</p>
21
+ <p>BlueFeather への要望、ご意見、バグ報告などがありましたら、<a href="http://ruby.morphball.net/bluefeather/">BlueFeather 配布サイト</a>よりメッセージを送信していただくか、もしくは Dice(<a href="&#109;&#097;&#105;&#108;&#116;&#x6F;:&#x74;&#x65;&#116;&#x72;&#097;&#100;&#x69;&#099;&#101;&#x40;&#103;&#x6D;&#x61;&#x69;&#x6C;&#x2E;&#099;&#x6F;m">&#x74;&#x65;&#116;&#x72;&#097;&#100;&#x69;&#099;&#101;&#x40;&#103;&#x6D;&#x61;&#x69;&#x6C;&#x2E;&#099;&#x6F;m</a>)までメールでご連絡していただけるよう、よろしくお願いします。</p>
22
22
 
23
23
  </body>
24
24
  </html>
@@ -24,7 +24,7 @@
24
24
  <p>If you want to send requests, comments, or bug reports to BlueFeather, please
25
25
  feel free to post messages from
26
26
  <a href="http://ruby.morphball.net/bluefeather/index_en.html">http://ruby.morphball.net/bluefeather/index_en.html</a> or to send mail to Dice.
27
- (<a href="m&#097;&#x69;&#108;&#116;&#111;:&#x74;&#101;&#116;r&#097;&#100;&#105;&#099;&#101;&#064;g&#109;&#097;&#105;&#108;&#046;&#x63;&#111;&#x6D;">&#x74;&#101;&#116;r&#097;&#100;&#105;&#099;&#101;&#064;g&#109;&#097;&#105;&#108;&#046;&#x63;&#111;&#x6D;</a>)</p>
27
+ (<a href="&#109;&#097;i&#x6C;&#116;&#x6F;:t&#x65;&#116;&#x72;&#097;&#100;&#x69;&#x63;&#x65;&#064;&#103;&#109;&#097;&#x69;l&#x2E;&#099;&#x6F;&#109;">t&#x65;&#116;&#x72;&#097;&#100;&#x69;&#x63;&#x65;&#064;&#103;&#109;&#097;&#x69;l&#x2E;&#099;&#x6F;&#109;</a>)</p>
28
28
 
29
29
  </body>
30
30
  </html>
data/doc/en/index.bfdoc CHANGED
@@ -10,7 +10,7 @@ BlueFeather Manual
10
10
 
11
11
  -> [Japanese version (original)](../index.html)
12
12
 
13
- (2009-06-15: this document based on version 0.22)
13
+ (2009-08-01: this document based on version 0.30)
14
14
 
15
15
  BlueFeather is software for converting text written by extended Markdown like
16
16
  [PHP Markdown Extra][] to html. It is pair of command-line tool and pure Ruby
data/doc/en/index.html CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  <p>-> <a href="../index.html">Japanese version (original)</a></p>
14
14
 
15
- <p>(2009-06-15: this document based on version 0.22)</p>
15
+ <p>(2009-08-01: this document based on version 0.30)</p>
16
16
 
17
17
  <p>BlueFeather is software for converting text written by extended Markdown like
18
18
  <a href="http://michelf.com/projects/php-markdown/extra/">PHP Markdown Extra</a> to html. It is pair of command-line tool and pure Ruby
data/doc/index.bfdoc CHANGED
@@ -9,7 +9,7 @@ BlueFeather マニュアル
9
9
  → [English version](en/index.html)
10
10
 
11
11
 
12
- (2009-06-15 バージョン 0.22 準拠)
12
+ (2009-08-01 バージョン 0.30 準拠)
13
13
 
14
14
  BlueFeather は、拡張 Markdown 記法で書かれたテキストを html に変換するソフトウェアです。
15
15
  コマンドラインツールと、Ruby スクリプト内で変換を行うためのライブラリがセットになっています。
data/doc/index.html CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  <p>→ <a href="en/index.html">English version</a></p>
15
15
 
16
- <p>(2009-06-15 バージョン 0.22 準拠)</p>
16
+ <p>(2009-08-01 バージョン 0.30 準拠)</p>
17
17
 
18
18
  <p>BlueFeather は、拡張 Markdown 記法で書かれたテキストを html に変換するソフトウェアです。
19
19
  コマンドラインツールと、Ruby スクリプト内で変換を行うためのライブラリがセットになっています。</p>
@@ -64,7 +64,7 @@ html の head 要素内に出力される Content-Type の値、および変換
64
64
  Atom-Feed: example.xml
65
65
 
66
66
 
67
- ニュースフィードの URL。生成される html 文書の head 要素内に、以下のようなリンクが付け加えられ、RSS リーダーなどから登録できるようになる(オートディスカバリー)。
67
+ ニュースフィードの URL。生成される html 文書の head 要素内に、以下のようなリンクが付け加えられ、RSS リーダーなどでそのページを簡単に登録できるようになる(オートディスカバリー)。
68
68
 
69
69
  <link rel="alternate" type="application/atom+xml" href="example.xml" />
70
70
 
@@ -84,3 +84,44 @@ html の head 要素内に出力される Content-Type の値、および変換
84
84
  Description: にんじん,レシピ,料理
85
85
 
86
86
  その文書を表すキーワード。`<meta name="keywords" content="~">` の内容になる。
87
+
88
+
89
+ ### Numbering: {#numbering}
90
+
91
+ Numbering: yes
92
+
93
+ *BlueFeather 0.30以降*でのみ有効。
94
+
95
+ yes, true, on, 1のいずれかを指定すると、レベル2以降の見出し(h2~h6)に、自動で番号が振られるようになる。
96
+
97
+ 使用例:
98
+
99
+ Numbering: yes
100
+
101
+ # 見出し1
102
+ ## 見出し2a
103
+ ## 見出し2b
104
+ ### 見出し3a
105
+ ### 見出し3b
106
+ ## 見出し2c
107
+
108
+ ~
109
+
110
+ <h1>見出し1</h1>
111
+ <h2>1. 見出し2a</h2>
112
+ <h2>2. 見出し2b</h2>
113
+ <h3>2.1. 見出し3a</h3>
114
+ <h3>2.2. 見出し3b</h3>
115
+ <h2>3. 見出し2c</h2>
116
+
117
+ ### Numbering-Start-Level: {#numbering-start-level}
118
+
119
+ Numbering: yes
120
+ Numbering-Start-Level: 3
121
+
122
+ *BlueFeather 0.30以降*でのみ有効。
123
+
124
+ 見出しへの番号付けを行うとき、どのレベルの見出しから番号付けの対象とするのかを指定する。
125
+ [Numbering:](#numbering)ヘッダーと同時に使われているときのみ有効。
126
+
127
+ 省略した場合、レベル2以降の見出し(h2~h6)が番号付けの対象になる。
@@ -38,6 +38,8 @@ Atom-Feed: info/atom.xml
38
38
  <li><a href="#rss-feed" rel="toc">RSS-Feed:</a></li>
39
39
  <li><a href="#description" rel="toc">Description:</a></li>
40
40
  <li><a href="#keywords" rel="toc">Keywords:</a></li>
41
+ <li><a href="#numbering" rel="toc">Numbering:</a></li>
42
+ <li><a href="#numbering-start-level" rel="toc">Numbering-Start-Level:</a></li>
41
43
  </ul></li>
42
44
  </ul>
43
45
 
@@ -82,7 +84,7 @@ html の head 要素内に出力される Content-Type の値、および変換
82
84
  <pre><code>Atom-Feed: example.xml
83
85
  </code></pre>
84
86
 
85
- <p>ニュースフィードの URL。生成される html 文書の head 要素内に、以下のようなリンクが付け加えられ、RSS リーダーなどから登録できるようになる(オートディスカバリー)。</p>
87
+ <p>ニュースフィードの URL。生成される html 文書の head 要素内に、以下のようなリンクが付け加えられ、RSS リーダーなどでそのページを簡単に登録できるようになる(オートディスカバリー)。</p>
86
88
 
87
89
  <pre><code>&lt;link rel="alternate" type="application/atom+xml" href="example.xml" /&gt;
88
90
  </code></pre>
@@ -104,5 +106,49 @@ html の head 要素内に出力される Content-Type の値、および変換
104
106
 
105
107
  <p>その文書を表すキーワード。<code>&lt;meta name="keywords" content="~"&gt;</code> の内容になる。</p>
106
108
 
109
+ <h3 id="numbering">Numbering:</h3>
110
+
111
+ <pre><code>Numbering: yes
112
+ </code></pre>
113
+
114
+ <p><em>BlueFeather 0.30以降</em>でのみ有効。</p>
115
+
116
+ <p>yes, true, on, 1のいずれかを指定すると、レベル2以降の見出し(h2~h6)に、自動で番号が振られるようになる。</p>
117
+
118
+ <p>使用例:</p>
119
+
120
+ <pre><code>Numbering: yes
121
+
122
+ # 見出し1
123
+ ## 見出し2a
124
+ ## 見出し2b
125
+ ### 見出し3a
126
+ ### 見出し3b
127
+ ## 見出し2c
128
+ </code></pre>
129
+
130
+
131
+
132
+ <pre><code>&lt;h1&gt;見出し1&lt;/h1&gt;
133
+ &lt;h2&gt;1. 見出し2a&lt;/h2&gt;
134
+ &lt;h2&gt;2. 見出し2b&lt;/h2&gt;
135
+ &lt;h3&gt;2.1. 見出し3a&lt;/h3&gt;
136
+ &lt;h3&gt;2.2. 見出し3b&lt;/h3&gt;
137
+ &lt;h2&gt;3. 見出し2c&lt;/h2&gt;
138
+ </code></pre>
139
+
140
+ <h3 id="numbering-start-level">Numbering-Start-Level:</h3>
141
+
142
+ <pre><code>Numbering: yes
143
+ Numbering-Start-Level: 3
144
+ </code></pre>
145
+
146
+ <p><em>BlueFeather 0.30以降</em>でのみ有効。</p>
147
+
148
+ <p>見出しへの番号付けを行うとき、どのレベルの見出しから番号付けの対象とするのかを指定する。
149
+ <a href="#numbering">Numbering:</a>ヘッダーと同時に使われているときのみ有効。</p>
150
+
151
+ <p>省略した場合、レベル2以降の見出し(h2~h6)が番号付けの対象になる。</p>
152
+
107
153
  </body>
108
154
  </html>
data/lib/bluefeather.rb CHANGED
@@ -42,9 +42,9 @@ require 'uri'
42
42
 
43
43
 
44
44
  module BlueFeather
45
- VERSION = '0.22'
46
- VERSION_NUMBER = 0.22
47
- RELEASE_DATE = '2009-05-16'
45
+ VERSION = '0.30'
46
+ VERSION_NUMBER = 0.30
47
+ RELEASE_DATE = '2009-08-01'
48
48
  VERSION_LABEL = "#{VERSION} (#{RELEASE_DATE})"
49
49
 
50
50
  UTF8_BOM = "\xef\xbb\xbf"
@@ -188,7 +188,7 @@ module BlueFeather
188
188
  end
189
189
 
190
190
  class Document
191
- HEADER_PATTERN = /^(.+?)\s*\:\s*(.+)(?:\n|\Z)/
191
+ HEADER_PATTERN = /^(.+?)\s*\:\s*(.+?)\s*(?:\n|\Z)/
192
192
  BLANK_LINE_PATTERN = /^\n/
193
193
  HEADER_SEQUEL_PATTERN = /^\s+(.+)$/
194
194
 
@@ -304,6 +304,26 @@ module BlueFeather
304
304
  @headers['css']
305
305
  end
306
306
 
307
+ def numbering
308
+ case @headers['numbering']
309
+ when 'yes', '1', 'true', 'on'
310
+ true
311
+ else
312
+ false
313
+ end
314
+ end
315
+
316
+ alias numbering? numbering
317
+
318
+ def numbering_start_level
319
+ level = (@headers['numbering-start-level'] || 2).to_i
320
+ if level >= 1 and level <= 6 then
321
+ return level
322
+ else
323
+ return 2
324
+ end
325
+ end
326
+
307
327
  def encoding_type
308
328
  (@headers['encoding'] ? @headers['encoding'].downcase : 'utf-8')
309
329
  end
@@ -332,6 +352,8 @@ module BlueFeather
332
352
  # BlueFeather Extension
333
353
  attr_accessor :footnotes, :found_footnote_ids, :warnings
334
354
  attr_accessor :headers, :block_transform_depth
355
+ attr_accessor :numbering, :numbering_start_level # option switch
356
+ alias numbering? numbering
335
357
 
336
358
  def initialize
337
359
  @urls, @titles, @html_blocks = {}, {}, {}
@@ -339,6 +361,8 @@ module BlueFeather
339
361
  @footnotes, @found_footnote_ids, @warnings = {}, [], []
340
362
  @headers = []
341
363
  @block_transform_depth = 0
364
+ @numbering = false
365
+ @numbering_start_level = 2
342
366
  end
343
367
 
344
368
  end
@@ -524,6 +548,10 @@ module BlueFeather
524
548
 
525
549
  def document_to_html(doc)
526
550
  rs = RenderState.new
551
+ if doc.numbering? then
552
+ rs.numbering = true
553
+ end
554
+ rs.numbering_start_level = doc.numbering_start_level
527
555
 
528
556
  body_html = nil
529
557
 
@@ -964,7 +992,12 @@ module BlueFeather
964
992
  rs.warnings << "illegal TOC parameter - #{param} (valid example: 'h2..h4')"
965
993
  end
966
994
  end
967
-
995
+
996
+ if rs.headers.first and rs.headers.first.level >= (start_level + 1) then
997
+ rs.warnings << "illegal structure of headers - h#{start_level} should be set before h#{rs.headers.first.level}"
998
+ end
999
+
1000
+
968
1001
  ul_text = "\n\n"
969
1002
  rs.headers.each do |header|
970
1003
  if header.level >= start_level and header.level <= end_level then
@@ -976,7 +1009,8 @@ module BlueFeather
976
1009
  end
977
1010
  ul_text << "\n"
978
1011
 
979
- ul_text
1012
+ ul_text # output
1013
+
980
1014
  }
981
1015
  end
982
1016
 
@@ -1474,6 +1508,9 @@ module BlueFeather
1474
1508
  # Header 2
1475
1509
  # --------
1476
1510
  #
1511
+
1512
+ section_numbers = [nil, nil, nil, nil, nil]
1513
+
1477
1514
  str.
1478
1515
  gsub( HeaderRegexp ) {|m|
1479
1516
  if $1 then
@@ -1496,6 +1533,31 @@ module BlueFeather
1496
1533
  end
1497
1534
  end
1498
1535
 
1536
+ if rs.numbering? then
1537
+ if level >= rs.numbering_start_level and level <= 6 then
1538
+ depth = level - rs.numbering_start_level
1539
+
1540
+ section_numbers.each_index do |i|
1541
+ if i == depth and section_numbers[depth] then
1542
+ # increment a deepest number if current header's level equals last header's
1543
+ section_numbers[i] += 1
1544
+ elsif i <= depth then
1545
+ # set default number if nil
1546
+ section_numbers[i] ||= 1
1547
+ else
1548
+ # clear discardeds
1549
+ section_numbers[i] = nil
1550
+ end
1551
+ end
1552
+
1553
+ no = ''
1554
+ (0..depth).each do |i|
1555
+ no << "#{section_numbers[i]}."
1556
+ end
1557
+
1558
+ title = "#{no} #{title}"
1559
+ end
1560
+ end
1499
1561
 
1500
1562
  title_html = apply_span_transforms( title, rs )
1501
1563
  id ||= "bfheader-#{Digest::MD5.hexdigest(title)}"
data/spec/numbering.rb ADDED
@@ -0,0 +1,58 @@
1
+ require 'pathname'
2
+ require(Pathname.new(__FILE__).parent + 'lib/common.rb')
3
+
4
+
5
+ describe 'Numbering:' do
6
+ before(:each) do
7
+ @src = <<MARKDOWN
8
+ Numbering: #{@numbering}
9
+ Numbering-Start-Level: #{@start_level}
10
+
11
+ # h1
12
+ ## h2a
13
+ ## h2b
14
+ ### h3a
15
+ ### h3b
16
+ ## h2c
17
+ MARKDOWN
18
+
19
+ @html = BlueFeather.parse_document(@src)
20
+ @doc = Hpricot(@html)
21
+ end
22
+
23
+
24
+ describe "yes:" do
25
+ before(:all) do
26
+ @numbering, @start_level = 'yes ', ''
27
+ end
28
+
29
+ specify "numbering" do
30
+ @doc.at('h1').inner_text.should == 'h1'
31
+
32
+ elems = @doc.search('h2')
33
+ elems.map{|x| x.inner_text}.should == ['1. h2a', '2. h2b', '3. h2c']
34
+
35
+ elems = @doc.search('h3')
36
+ elems.map{|x| x.inner_text}.should == ['2.1. h3a', '2.2. h3b']
37
+ end
38
+
39
+ end
40
+
41
+ describe "yes (start=3):" do
42
+ before(:all) do
43
+ @numbering, @start_level = 'yes ', '3 '
44
+ end
45
+
46
+ specify "numbering" do
47
+ @doc.at('h1').inner_text.should == 'h1'
48
+
49
+ elems = @doc.search('h2')
50
+ elems.map{|x| x.inner_text}.should == ['h2a', 'h2b', 'h2c']
51
+
52
+ elems = @doc.search('h3')
53
+ elems.map{|x| x.inner_text}.should == ['1. h3a', '2. h3b']
54
+ end
55
+
56
+ end
57
+
58
+ end
data/spec/toc.rb CHANGED
@@ -3,8 +3,19 @@ require(Pathname.new(__FILE__).parent + 'lib/common.rb')
3
3
 
4
4
 
5
5
  describe 'TOC:' do
6
- before(:all) do
7
- @header_part = <<MARKDOWN
6
+ before(:each) do
7
+ @bf = BlueFeather::Parser.new
8
+ if @doc_src then
9
+ @html = @bf.parse_document(@doc_src)
10
+ else
11
+ @html, @rs = @bf.parse_text_with_render_state(@src)
12
+ end
13
+ @doc = Hpricot(@html)
14
+ end
15
+
16
+ describe 'Standard:' do
17
+ before(:all) do
18
+ @header_part = <<MARKDOWN
8
19
  # h1 #
9
20
  ## h2a ##
10
21
  ## h2b ##
@@ -13,84 +24,122 @@ describe 'TOC:' do
13
24
  ### h3c ###
14
25
  ## h2c ##
15
26
  MARKDOWN
16
- end
27
+ end
17
28
 
18
- before(:each) do
19
- @bf = BlueFeather::Parser.new
20
- @html = @bf.parse_text(@src)
21
- @doc = Hpricot(@html)
22
- end
23
29
 
24
30
 
25
- share_as :ContentOverview do
26
- specify 'overview' do
27
- @doc.should have_element('ul')
28
- @doc.should have_elements(1, 'h1')
29
- @doc.should have_elements(3, 'h2')
30
- @doc.should have_elements(3, 'h3')
31
+ share_as :ContentOverview do
32
+ specify 'overview' do
33
+ @doc.should have_element('ul')
34
+ @doc.should have_elements(1, 'h1')
35
+ @doc.should have_elements(3, 'h2')
36
+ @doc.should have_elements(3, 'h3')
37
+ end
31
38
  end
32
- end
33
-
34
-
35
- describe 'basic:' do
36
- include ContentOverview
37
- before(:all) do
38
- @src = "{toc}\n\n" + @header_part
39
+
40
+
41
+ describe 'basic:' do
42
+ include ContentOverview
43
+ before(:all) do
44
+ @src = "{toc}\n\n" + @header_part
45
+ end
46
+
47
+
48
+ specify 'list structure' do
49
+ toc = @doc.at('ul')
50
+ toc['class'] = 'toc'
51
+
52
+ @doc.should have_elements(3, 'ul.toc > li')
53
+ @doc.should have_elements(1, 'ul.toc > li > ul')
54
+ @doc.should have_elements(3, 'ul.toc > li > ul > li')
55
+ end
56
+
57
+ specify 'list content' do
58
+ toc = @doc.at('ul')
59
+ toc['class'] = 'toc'
60
+
61
+ items1 = @doc.search('ul.toc > li')
62
+ items1[0].inner_text.should == 'h2a'
63
+ items1[2].inner_text.should == 'h2c'
64
+
65
+ items2 = @doc.search('ul.toc > li > ul > li')
66
+ items2[0].inner_text.should == 'h3a'
67
+ items2[1].inner_text.should == 'h3b'
68
+ items2[2].inner_text.should == 'h3c'
69
+ end
70
+
39
71
  end
40
72
 
41
73
 
42
- specify 'list structure' do
43
- toc = @doc.at('ul')
44
- toc['class'] = 'toc'
74
+ describe 'range:' do
75
+ include ContentOverview
76
+ before(:all) do
77
+ @src = "{toc:h1..h2}\n\n" + @header_part
78
+ end
45
79
 
46
- @doc.should have_elements(3, 'ul.toc > li')
47
- @doc.should have_elements(1, 'ul.toc > li > ul')
48
- @doc.should have_elements(3, 'ul.toc > li > ul > li')
80
+ specify 'list structure' do
81
+ toc = @doc.at('ul')
82
+ toc['class'] = 'toc'
83
+
84
+ @doc.should have_elements(1, 'ul.toc > li')
85
+ @doc.should have_elements(1, 'ul.toc > li > ul')
86
+ @doc.should have_elements(3, 'ul.toc > li > ul > li')
87
+ end
88
+
89
+ specify 'list content' do
90
+ toc = @doc.at('ul')
91
+ toc['class'] = 'toc'
92
+
93
+ items2 = @doc.search('ul.toc > li > ul > li')
94
+ items2[0].inner_text.should == 'h2a'
95
+ items2[1].inner_text.should == 'h2b'
96
+ items2[2].inner_text.should == 'h2c'
97
+ end
98
+
49
99
  end
50
100
 
51
- specify 'list content' do
52
- toc = @doc.at('ul')
53
- toc['class'] = 'toc'
101
+
102
+ describe 'numbering:' do
103
+ before(:all) do
104
+ @doc_src = "Numbering: yes\n\n{toc}\n" + @header_part
105
+ end
54
106
 
55
- items1 = @doc.search('ul.toc > li')
56
- items1[0].inner_text.should == 'h2a'
57
- items1[2].inner_text.should == 'h2c'
107
+ specify 'list content' do
108
+ toc = @doc.at('ul')
109
+ toc['class'] = 'toc'
110
+
111
+ items1 = @doc.search('ul.toc > li')
112
+ items1[0].inner_text.should == '1. h2a'
113
+ items1[2].inner_text.should == '3. h2c'
114
+
115
+ items2 = @doc.search('ul.toc > li > ul > li')
116
+ items2[0].inner_text.should == '2.1. h3a'
117
+ items2[1].inner_text.should == '2.2. h3b'
118
+ items2[2].inner_text.should == '2.3. h3c'
58
119
 
59
- items2 = @doc.search('ul.toc > li > ul > li')
60
- items2[0].inner_text.should == 'h3a'
61
- items2[1].inner_text.should == 'h3b'
62
- items2[2].inner_text.should == 'h3c'
120
+ end
63
121
  end
64
122
 
65
- end
66
-
67
- describe 'range:' do
68
- include ContentOverview
69
- before(:all) do
70
- @src = "{toc:h1..h2}\n\n" + @header_part
71
- end
72
123
 
73
- specify 'list structure' do
74
- toc = @doc.at('ul')
75
- toc['class'] = 'toc'
76
-
77
- @doc.should have_elements(1, 'ul.toc > li')
78
- @doc.should have_elements(1, 'ul.toc > li > ul')
79
- @doc.should have_elements(3, 'ul.toc > li > ul > li')
80
- end
81
-
82
- specify 'list content' do
83
- toc = @doc.at('ul')
84
- toc['class'] = 'toc'
124
+
125
+ end
126
+
127
+ describe 'Illegal:' do
128
+ describe 'Standard:' do
129
+ before(:all) do
130
+ @src = <<MARKDOWN
131
+ {toc}
132
+
133
+ ### h3
134
+ MARKDOWN
135
+ end
85
136
 
86
- items2 = @doc.search('ul.toc > li > ul > li')
87
- items2[0].inner_text.should == 'h2a'
88
- items2[1].inner_text.should == 'h2b'
89
- items2[2].inner_text.should == 'h2c'
137
+ specify '1 warning' do
138
+ @rs.warnings.size.should == 1
139
+ end
90
140
  end
91
-
92
141
  end
93
-
142
+
94
143
 
95
144
 
96
145
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bluefeather
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.22"
4
+ version: "0.30"
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dice
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-15 00:00:00 +09:00
12
+ date: 2009-08-01 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -40,6 +40,7 @@ files:
40
40
  - spec/footnote.rb
41
41
  - spec/header-id.rb
42
42
  - spec/lib/common.rb
43
+ - spec/numbering.rb
43
44
  - spec/table.rb
44
45
  - spec/text/encoding_sample_default.bfdoc
45
46
  - spec/text/encoding_sample_euc-jp.bfdoc