hikidoc:41
From: Kazuhiko <kazuhiko@f...>
Date: Thu, 27 Jul 2006 12:00:13 +0900
Subject: [hikidoc:41] Re: インライン要素の処理に不具合?
こんにちは、かずひこです。 At Wed, 26 Jul 2006 16:29:46 +0900 (JST), MoonWolf wrote: > ||foo|| > ||''foo''|| > ||==foo==|| > ||==''foo''==|| > ||''==foo==''|| > > 3行目までは正常に表示されますが、4,5行目がおかしい。 > ネストが正しく処理できていないようです。 ご報告ありがとうございます。 確かに、ネストの場合をまったく考慮していませんでした。 以下の差分でコミットしましたがいかがでしょうか? Index: test/test_hikidoc.rb =================================================================== --- test/test_hikidoc.rb (revision 36) +++ test/test_hikidoc.rb (revision 37) @@ -175,6 +175,11 @@ assert_equal( "<p><em>foo</em> and <em>bar</em></p>\n", HikiDoc.new( "''foo'' and ''bar''" ).to_html ) end + def test_nested_modifier + assert_equal( "<p><em><del>foo</del></em></p>\n", HikiDoc.new( "''==foo==''" ).to_html ) + assert_equal( "<p><del><em>foo</em></del></p>\n", HikiDoc.new( "==''foo''==" ).to_html ) + end + def test_modifier_and_link assert_equal( %Q|<p><a href="http://hikiwiki.org/"><strong>Hiki</strong></a></p>\n|, HikiDoc.new( "[['''Hiki'''|http://hikiwiki.org/]]" ).to_html ) end Index: lib/hikidoc.rb =================================================================== --- lib/hikidoc.rb (revision 36) +++ lib/hikidoc.rb (revision 37) @@ -367,20 +367,17 @@ STRONG = "'''" EM = "''" DEL = '==' - STRONG_RE = /#{STRONG}(.+?)#{STRONG}/ - EM_RE = /#{EM}(.+?)#{EM}/ - DEL_RE = /#{DEL}(.+?)#{DEL}/ - MODIFIER_RE = /(#{STRONG_RE}|#{EM_RE}|#{DEL_RE})/ + MODIFIER_RE = /(#{STRONG}|#{EM}|#{DEL})(.+?)(?:\1)/ def parse_modifier( text ) text.gsub( MODIFIER_RE ) do |str| - case str - when STRONG_RE - store_block( "<strong>#{$1}</strong>" ) - when EM_RE - store_block( "<em>#{$1}</em>" ) - when DEL_RE - store_block( "<del>#{$1}</del>" ) + case $1 + when STRONG + store_block( "<strong>#{parse_modifier($2)}</strong>" ) + when EM + store_block( "<em>#{parse_modifier($2)}</em>" ) + when DEL + store_block( "<del>#{parse_modifier($2)}</del>" ) else str end -- かずひこ <http://wiki.fdiary.net/kazuhiko/> 「恋とハックはアジャイルが命!」 -- ML: hikidoc@m... 使い方: http://QuickML.com/
40 2006-07-26 09:29 [moonwolf@m... ] インライン要素の処理に不具合? -> 41 2006-07-27 05:00 ┗[kazuhiko@f... ] 42 2006-07-28 04:55 ┗[kazuhiko@f... ]