Kazuhiko
kazuh****@fdiar*****
2005年 6月 22日 (水) 11:21:39 JST
かずひこです。 At Tue, 21 Jun 2005 18:08:46 +0900, Kazuhiko wrote: > > {{{ > > def HelloWorld() > > print "Hello World" > > }}} > > 複数行にわたる pre ですか。。。 > 「シンプルな文法」を標榜する Hiki としては、Pukiwiki にもないような文法の > 導入には強い抵抗があります。:) その後、まわりから「複数行 pre はハッカー御用達だ!」とか「いや、ハッカー なら textarea の編集はエディタでやってるから先頭に空白入れるのは楽勝だ」 とかいろんな声をもらったのですが、まあとりあえず実装してみました。 {{{ ... }}} という記法 (Tiki とか Trac とかと同じ) がプラグインに似すぎていてちょっと イヤというのはありますが、かといって他の wiki にないあらたな記法を作るの もイヤだし、なやましいところです。 えっと、ニーズがどれくらいあるのかわからないのですが、他にも「複数行 pre」 を導入して欲しい人はいますか? Index: style/default/parser.rb =================================================================== RCS file: /cvsroot/hiki/hiki/style/default/parser.rb,v retrieving revision 1.14 diff -u -r1.14 parser.rb --- style/default/parser.rb 21 Jun 2005 06:16:12 -0000 1.14 +++ style/default/parser.rb 22 Jun 2005 02:11:08 -0000 @@ -40,6 +40,7 @@ SPECIAL = '^\[\]\'=\{\}' TABLE = '\|\|(.*)' DEFLIST = '^:(.+)' + MULTI_PRE = '^\{\{\{\n(.*)\n\}\}\}$' NEWLINE = "\000\000\000\000" EMPHASIS_RE = /^#{EMPHASIS}/ @@ -66,6 +67,7 @@ @cur_stack.clear @last_blocktype.clear + s.gsub!(/#{MULTI_PRE}/m) {|i| ' ' + $1.gsub(/\n/, NEWLINE)} s.gsub!(/#{PLUGIN}/m) {|i| i.gsub(/\n/, NEWLINE)} s.each do |line| parse_line( line ) @@ -132,7 +134,7 @@ when /^$/ @cur_stack.push( {:e => :empty} ) when /^\s(.*)/m - @cur_stack.push( {:e => :pre, :s => $1} ) + @cur_stack.push( {:e => :pre, :s => $1.gsub(/#{NEWLINE}/, "\n")} ) when /^#{TABLE}/ @cur_stack.push( {:e => :table} ) @cur_stack.push( {:e => :table_row_open} ) Index: test/test_default_parser.rb =================================================================== RCS file: /cvsroot/hiki/hiki/test/test_default_parser.rb,v retrieving revision 1.7 diff -u -r1.7 test_default_parser.rb --- test/test_default_parser.rb 21 Jun 2005 06:16:12 -0000 1.7 +++ test/test_default_parser.rb 22 Jun 2005 02:11:08 -0000 @@ -167,4 +167,16 @@ assert_equal(@parser.parse( "aaa\nbbb" ), @parser.parse( "aaa\n//comment\nbbb" ) ) end + + def test_pre + assert_equal([{:e=>:pre_open}, + {:s=>"aaa\n", :e=>:normal_text}, + {:s=>"bbb", :e=>:normal_text}, + {:e=>:pre_close}], + @parser.parse( " aaa\n bbb" ) ) + assert_equal([{:e=>:pre_open}, + {:s=>"aaa\nbbb", :e=>:normal_text}, + {:e=>:pre_close}], + @parser.parse( "{{{\naaa\nbbb\n}}}" ) ) + end end -- かずひこ <http://wiki.fdiary.net/kazuhiko/> 「恋とハックはアジャイルが命!」