Makoto Kuwata
kwa****@kuwat*****
2007年 9月 2日 (日) 09:58:35 JST
桑田です。 HikiをUTF8化する方法について反応がないので、たぶんHikiはUTF8化には 未対応なのだろうと思いますが、とりあえず力ずくで各種ファイルを UTF8に変更することで、UTF8化できました。 それとは別に、HikiDoc#parse_description() を拡張し、 :text:description ではなく :text: description とするようにフォーマットを変更するプラグインを作りました。 これを使うと、例えば :File::PATH_SEPARATOR: path separator (default ':') が <dt>File</dt><dd>:PATH_SEPARATOR: path separator (default ':')</dd> ではなく <dt>File::PATH_SEPARATOR</dt><dd>path separator (default ':')</dd> とparseされます。 ただし、 :text:description のように半角空白をおいていない場合はparseされません。 また ::description は <dd>description</dd> となります(従来の挙動と同じであり、半角空白はいりません)。 これでSafari2でも '\' が問題なく使えるようになり、また :File\:\:PATH_SEPARATOR: のように書く必要もなくなりました。 参考までに。 hiki_description.rb -------------------- ## parse ':text: desc' ## ## This plugin changes HikiDoc#parse_definition() to require spaces after ':'. ## ## For example, ## :File::SEPARATOR: path separator char ## is parsed as ## <dt>File</dt><dd>:SEPARATOR: path separator char</dd> ## by the original parse_definition(). ## But it will be parsed as ## <dt>File::SEPARATOR</dt><dd>path separator char</dd> ## if this plugin is installed and enabled. ## ## Space after ':' is not required when text is empty. ## For example, ## ::foobar ## is parsed as ## <dd>foobar</dd> require 'style/default/hikidoc' class ::HikiDoc #DEFINITION_RE = /^:(.*?)?:(.*)\n?/ # original #DEFINITION_RE = /^:(.*?)?:(?:[ \t]+(.*))?$/ DEFINITION_RE = /^:(?::[ \t]*(.*)|(.+?):(?:[ \t]+(.*))?)$/ #DEFINITIONS_RE = /(#{DEFINITION_RE})+/ # original def parse_definition( text ) parsed_text = text.gsub( DEFINITION_RE ) do |str| inline_parser( str ) end parsed_text.gsub( DEFINITIONS_RE ) do |str| ret = "\n<dl>\n" str.chomp! str.scan( DEFINITION_RE ) do |d2, t, d| d = d2 if d2 ret << "<dt>#{t}</dt>" if t && !t.empty? ret << "<dd>#{d}</dd>" if d && !d.empty? ret << "\n" #if t.empty? # ret << "<dd>%s</dd>\n" % d #elsif d.empty? # ret << "<dt>%s</dt>\n" % t #else # ret << "<dt>%s</dt><dd>%s</dd>\n" % [ t, d ] #end end ret << "</dl>\n\n" ret end end end -------------------- -- makoto kuwata