[Hiki-dev:00844] Re: Preformatted text {{{..}}} は出来ませんか?

Back to archive index

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/>
  「恋とハックはアジャイルが命!」



Hiki-dev メーリングリストの案内
Back to archive index