Kazuhiko
kazuh****@fdiar*****
2003年 4月 4日 (金) 00:15:18 JST
かずひこです。 At Thu, 03 Apr 2003 23:37:24 +0900, Kazuhiko wrote: > tdiary の wiki style を使っていないので互換性のほどはよくわかりませんが、 > とりあえずできました。パッチを添付しておきます。 マルチパートで添付すると sf.jp のアーカイブが文字化けするようですね。プ レーンテキストでパッチを挿入することにします。ついでに ||1||||3 みたいなのの解析結果が wiki style と異なりそうなのを修正しました。さっき のパッチは忘れてください。:p diff -ur hiki/html_formatter.rb hiki/html_formatter.rb --- hiki/html_formatter.rb 2003-02-23 11:20:08.000000000 +0900 +++ hiki/html_formatter.rb 2003-04-03 09:24:49.000000000 +0900 @@ -24,7 +24,7 @@ MAP[:ordered_list_open] = '<ol>' MAP[:ordered_list_close] = '</ol>' MAP[:listitem_open] = '<li>' - MAP[:listitem_close] = '' + MAP[:listitem_close] = '</li>' MAP[:blockquote_open] = '<blockquote>' MAP[:blockquote_close] = '</blockquote>' MAP[:definition_list_open] = '<dl>' @@ -43,7 +43,13 @@ MAP[:strong_close] = '</strong>' MAP[:delete_open] = '<del>' MAP[:delete_close] = '</del>' - + MAP[:table_open] = '<table border="1">' + MAP[:table_close] = '</table>' + MAP[:table_row_open] = '<tr>' + MAP[:table_row_close] = '</tr>' + MAP[:table_data_open] = '<td>' + MAP[:table_data_close] = '</td>' + def initialize( s, db, plugin, suffix = 'l') @tokens = s @db = db diff -ur hiki/parser.rb hiki/parser.rb --- hiki/parser.rb 2003-03-24 17:10:48.000000000 +0900 +++ hiki/parser.rb 2003-04-04 00:11:23.000000000 +0900 @@ -34,6 +34,7 @@ IMAGE = '\.(?:jpg|jpeg|png|gif)' PLUGIN = '\{\{(.+?)(?:\((.*?)\))?\s*\}\}' SPECIAL = '^\[\]\'=\{\}' + TABLE = '\|\|(.*)' EMPHASIS_RE = /^#{EMPHASIS}/ STRONG_RE = /^#{STRONG}(?!:')/ @@ -46,6 +47,7 @@ INTERWIKI_RE = /^#{INTERWIKI}/ IMAGE_RE = /#{IMAGE}$/i PLUGIN_RE = /^#{PLUGIN}/ + TABLE_RE = /^#{TABLE}/ def parse( s ) @stack = HikiStack::new @@ -84,6 +86,9 @@ @cur_stack.push( {:e => :empty} ) when /^\s(.*)/ @cur_stack.push( {:e => :pre, :s => $1} ) + when /^#{TABLE}/ + @cur_stack.push( {:e => :table} ) + inline( line ) when /^#{PLUGIN}\s*$/ if $use_plugin @cur_stack.push( {:e => :plugin, :method => $1, :param => $2} ) @@ -169,6 +174,15 @@ when WIKINAME_RE str = ($2 || '') + $' @cur_stack.push ( {:e => :wikiname, :s => $1} ) + when TABLE_RE + @cur_stack.push( {:e => :table_row_open} ) + $1.split( /\|\|/ ).each do |s| + @cur_stack.push( {:e => :table_data_open} ) + inline (s) + @cur_stack.push( {:e => :table_data_close} ) + end + @cur_stack.push( {:e => :table_row_close} ) + str = '' when NORMAL_TEXT_RE m = $& after = $' @@ -264,6 +278,12 @@ end e[:e] = :normal_text ns.push( e ) + when :table + if type != @last_blocktype.last + close_blocks( ns, block_level ) + ns.push( {:e => "#{type}_open".intern} ) + @last_blocktype.push type + end when :emphasis_close, :strong_close, :delete_close ns.push ( e ) else -- かずひこ <http://www.fdiary.net/~kazuhiko/diary/> ★シャア「名字が付いてない」 ☆一兵卒「あんなの飾りです。偉い人にはそれが分からんのです」