Name: WikiConst FullName: "SuikaWikiConst" format support URI: IW:SuikaWiki:SuikaWiki Description: This module provides "SuikaWikiConst/0.9" support. Initialize: my $NS_XHTML1 = 'http://www.w3.org/1999/xhtml'; { Name: wikiformat/SuikaWikiConst-to-HTML FullName: SuikaWikiConst/0.9 document format -> HTML Format: my $data = to_hash ($o->{content}); $r = Message::Markup::XML::Node->new (namespace_uri => $NS_XHTML1, local_name => 'dl'); for my $key (sort keys %$data) { if ($o->_database_exist ($key)) { $r->append_new_node (namespace_uri => $NS_XHTML1, local_name => 'dt') ->append_node ($o->_html_wikilink ($key), node_or_text => 1); } else { $r->append_new_node (namespace_uri => $NS_XHTML1, local_name => 'dt') ->append_text ($key); } $r->append_text ("\n\t"); $r->append_new_node (namespace_uri => $NS_XHTML1, local_name => 'dd') ->append_text ($data->{$key}); $r->append_text ("\n"); } $r = '' unless $r->count; $r->set_attribute (class => 'SuikaWikiConst') if $r; } MODULE: sub to_hash ($;$) { my $page = shift; my $h = shift || {}; my $val; for my $line (split /\n/, $page) { next if $line =~ /^#/; $line =~ tr/\x0A\x0D//d; if ($val && $line =~ s/^\s+\\?//) { $h->{$val} .= length $h->{$val} ? "\n" . $line : $line; } elsif ($line =~ /^(.+):\s*$/) { $val = $1; $h->{$val} = ''; } } $h; } ## To be obsolete *wiki::suikawikiconst::to_hash = \&to_hash; POD:TO DO: - Remove &wiki::suikawikiconst::to_hash. POD:LICENSE: Copyright 2003 Wakaba %%GNUGPL2%%