OSDN Git Service

改行コードをLFに統一。
[fswiki/fswiki.git] / lib / Wiki / HTMLParser.pm
index ae77062..5cf5986 100644 (file)
-###############################################################################\r
-#\r
-# HTML¥Ñ¡¼¥µ\r
-#\r
-###############################################################################\r
-package Wiki::HTMLParser;\r
-use Wiki::Parser;\r
-use vars qw(@ISA);\r
-use strict;\r
-\r
-@ISA = qw(Wiki::Parser);\r
-#==============================================================================\r
-# ¥³¥ó¥¹¥È¥é¥¯¥¿\r
-#==============================================================================\r
-sub new {\r
-       my $class   = shift;\r
-       my $wiki    = shift;\r
-       my $mainflg = shift;\r
-       \r
-       if(!defined($mainflg) || $mainflg eq ""){ $mainflg = 0; }\r
-       \r
-       my $self = Wiki::Parser->new($wiki);\r
-       \r
-       $self->{html}  = "";\r
-       $self->{pre}   = "";\r
-       $self->{quote} = "";\r
-       $self->{table} = 0;\r
-       $self->{level} = 0;\r
-       $self->{para}  = 0;\r
-       $self->{p_cnt} = 0;\r
-       $self->{main}  = $mainflg;\r
-       return bless $self,$class;\r
-}\r
-\r
-#==============================================================================\r
-# ¥ê¥¹¥È\r
-#==============================================================================\r
-sub l_list {\r
-       my $self  = shift;\r
-       my $level = shift;\r
-       my $obj   = shift;\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       }\r
-       \r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       my $html = join("",@$obj);\r
-       my $plus = 1;\r
-       \r
-       if($level < $self->{level}){ $plus = -1; }\r
-       if($level==$self->{level}){\r
-               $self->{html} .= "</li>\n";\r
-       }\r
-       while($level != $self->{level}){\r
-               if($plus==1){\r
-                       $self->{html} .= "<ul>\n";\r
-                       push(@{$self->{close_list}},"</ul>\n");\r
-               } else {\r
-                       $self->{html} .= "</li>\n";\r
-                       $self->{html} .= pop(@{$self->{close_list}});\r
-               }\r
-               $self->{level} += $plus;\r
-       }\r
-       \r
-       $self->{html} .= "<li>".$html;\r
-}\r
-\r
-#==============================================================================\r
-# ÈÖ¹æÉÕ¤­¥ê¥¹¥È\r
-#==============================================================================\r
-sub l_numlist {\r
-       my $self  = shift;\r
-       my $level = shift;\r
-       my $obj   = shift;\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       }\r
-       \r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       my $html = join("",@$obj);\r
-       my $plus = 1;\r
-       \r
-       if($level < $self->{level}){ $plus = -1; }\r
-       if($level==$self->{level}){\r
-               $self->{html} .= "</li>\n";\r
-       }\r
-       while($level != $self->{level}){\r
-               if($plus==1){\r
-                       $self->{html} .= "<ol>\n";\r
-                       push(@{$self->{close_list}},"</ol>\n");\r
-               } else {\r
-                       $self->{html} .= "</li>\n";\r
-                       $self->{html} .= pop(@{$self->{close_list}});\r
-               }\r
-               $self->{level} += $plus;\r
-       }\r
-       $self->{html} .= "<li>".$html;\r
-}\r
-\r
-#==============================================================================\r
-# ¥ê¥¹¥È¤Î½ªÎ»\r
-#==============================================================================\r
-sub end_list {\r
-       my $self  = shift;\r
-       if ($self->{level}!=0) {\r
-               $self->{html} .= "</li>\n";\r
-               while($self->{level}!=0){\r
-                       $self->{html} .= pop(@{$self->{close_list}});\r
-                       $self->{level} += -1;\r
-               }\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# ¥Ø¥Ã¥É¥é¥¤¥ó\r
-#==============================================================================\r
-sub l_headline {\r
-       my $self  = shift;\r
-       my $level = shift;\r
-       my $obj   = shift;\r
-       my $wiki  = $self->{wiki};\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       }\r
-       \r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       my $html  = join("",@$obj);\r
-       \r
-       # ¥á¥¤¥ó¤Îɽ¼¨Îΰè¤Ç¤Ê¤¤¤È¤­\r
-       if(!$self->{main}){\r
-               $self->{html} .= "<h".($level+1).">".$html."</h".($level+1).">\n";\r
-\r
-       # ¥á¥¤¥ó¤Îɽ¼¨Îΰè¤Î¾ì¹ç¤Ï¥¢¥ó¥«¤ò½ÐÎÏ\r
-       } else {\r
-               if($level==2){\r
-                       $self->{html} .= "<h".($level+1)."><a name=\"p".$self->{p_cnt}."\"><span class=\"sanchor\">&nbsp;</span>".\r
-                                        $html."</a></h".($level+1).">\n";\r
-               } else {\r
-                       $self->{html} .= "<h".($level+1)."><a name=\"p".$self->{p_cnt}."\">".$html."</a></h".($level+1).">\n";\r
-               }\r
-               # ¥Ñ¡¼¥ÈÊÔ½¸¤¬ON¤«¤ÄÊÔ½¸²Äǽ¤Ê¾ì¹ç¤ÏÊÔ½¸¥¢¥ó¥«¤ò½ÐÎÏ\r
-               if($self->{no_partedit}!=1){\r
-                       my $page = $wiki->get_CGI()->param("page");\r
-                       my $part_edit = "";\r
-                       # ¥Ñ¡¼¥È¥ê¥ó¥¯¤¬ON¤Î¾ì¹ç¤Ï°ÜÆ°ÍѤΥ¢¥ó¥«¤ò½ÐÎÏ\r
-                       if ($wiki->config("partlink") == 1) {\r
-                               $part_edit .= "<a class=\"partedit\" href=\"#\">TOP</a> ";\r
-                               $part_edit .= "<a class=\"partedit\" href=\"#p".($self->{p_cnt} - 1)."\">¢¬</a> ";\r
-                               $part_edit .= "<a class=\"partedit\" href=\"#p".($self->{p_cnt} + 1)."\">¢­</a> ";\r
-                       }\r
-                       # ¥Ñ¡¼¥ÈÊÔ½¸¤¬ON¤«¤ÄÊÔ½¸²Äǽ¤Ê¾ì¹ç¤ÏÊÔ½¸¥¢¥ó¥«¤ò½ÐÎÏ\r
-                       if($wiki->config("partedit")==1 && $wiki->can_modify_page($page)){\r
-                               unless(defined($self->{partedit}->{$page})){\r
-                                       $self->{partedit}->{$page} = 0;\r
-                               } else {\r
-                                       $self->{partedit}->{$page}++;\r
-                               }\r
-                               # InterWiki·Á¼°¤Î¾ì¹ç\r
-                               my $full = $page;\r
-                               my $path = $self->{wiki}->config('script_name');\r
-                               if(index($page,":")!=-1){\r
-                                       ($path,$page) = split(/:/,$page);\r
-                                       $path = $self->{wiki}->config('script_name')."/$path";\r
-                               }\r
-                               $part_edit .= "<a class=\"partedit\" href=\"$path?action=EDIT".\r
-                                             "&amp;page=".&Util::url_encode($page).\r
-                                             "&amp;artno=".$self->{partedit}->{$full}."\" rel=\"nofollow\">ÊÔ½¸</a>";\r
-                       }\r
-                       if($part_edit ne ""){\r
-                               $self->{html} .= "<div class=\"partedit\">$part_edit</div>\n";\r
-                       }\r
-               }\r
-               \r
-       }\r
-       $self->{p_cnt}++;\r
-}\r
-\r
-#==============================================================================\r
-# ¿åÊ¿Àþ\r
-#==============================================================================\r
-sub l_line {\r
-       my $self = shift;\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       }\r
-       \r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       $self->{html} .= "<hr>\n";\r
-}\r
-\r
-#==============================================================================\r
-# ÃÊÍî¶èÀÚ¤ê\r
-#==============================================================================\r
-sub l_paragraph {\r
-       my $self = shift;\r
-       \r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       } elsif($self->{wiki}->config('br_mode')==1){\r
-               $self->{html} .= "<br>\n";\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# À°·ÁºÑ¥Æ¥­¥¹¥È\r
-#==============================================================================\r
-sub l_verbatim {\r
-       my $self  = shift;\r
-       my $text  = shift;\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       }\r
-       \r
-       $self->end_list;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       $text =~ s/^\s//;\r
-       $self->{pre} .= Util::escapeHTML($text)."\n";\r
-}\r
-\r
-sub end_verbatim {\r
-       my $self  = shift;\r
-       if($self->{pre} ne ""){\r
-               $self->{html} .= "<pre>".$self->{pre}."</pre>\n";\r
-               $self->{pre} = "";\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# ¥Æ¡¼¥Ö¥ë\r
-#==============================================================================\r
-sub l_table {\r
-       my $self = shift;\r
-       my $row  = shift;\r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_quote;\r
-       \r
-       if($self->{table}==0){\r
-               $self->{table}=1;\r
-               $self->{html} .= "<table>\n";\r
-               $self->{html} .= "<tr>\n";\r
-               foreach(@$row){\r
-                       my $html = join("",@$_);\r
-                       $self->{html} .= "<th>".$html."</th>\n";\r
-               }\r
-               $self->{html} .= "</tr>\n";\r
-       } else {\r
-               $self->{table}=2;\r
-               $self->{html} .= "<tr>\n";\r
-               foreach(@$row){\r
-                       my $html = join("",@$_);\r
-                       $self->{html} .= "<td>".$html."</td>\n";\r
-               }\r
-               $self->{html} .= "</tr>\n";\r
-       }\r
-}\r
-\r
-sub end_table {\r
-       my $self = shift;\r
-       if($self->{table}!=0){\r
-               $self->{table} = 0;\r
-               $self->{html} .= "</table>\n";\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# ¥Ñ¡¼¥¹½ªÎ»»þ¤Î½èÍý\r
-#==============================================================================\r
-sub end_parse {\r
-       my $self = shift;\r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# ¹Ô½ñ¼°¤Ë³ºÅö¤·¤Ê¤¤¹Ô\r
-#==============================================================================\r
-sub l_text {\r
-       my $self = shift;\r
-       my $obj  = shift;\r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       my $html = join("",@$obj);\r
-       \r
-       if($self->{para}==0){\r
-               $self->{html} .= "<p>";\r
-               $self->{para} = 1;\r
-       }\r
-       $self->{html} .= $html;\r
-       \r
-       # br¥â¡¼¥É¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï<br>¤ò­¤¹\r
-       if($self->{wiki}->config('br_mode')==1){\r
-               $self->{html} .= "<br>\n";\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# °úÍÑ\r
-#==============================================================================\r
-sub l_quotation {\r
-       my $self = shift;\r
-       my $obj  = shift;\r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       my $html = join("",@$obj);\r
-       $self->{quote} .= "<p>".$html."</p>\n";\r
-}\r
-\r
-sub end_quote {\r
-       my $self = shift;\r
-       if($self->{quote} ne ""){\r
-               $self->{html} .= "<blockquote>".$self->{quote}."</blockquote>\n";\r
-               $self->{quote} = "";\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# ÀâÌÀ\r
-#==============================================================================\r
-sub l_explanation {\r
-       my $self = shift;\r
-       my $obj1 = shift;\r
-       my $obj2 = shift;\r
-       \r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       my $html1 = join("",@$obj1);\r
-       my $html2 = join("",@$obj2);\r
-       \r
-       $self->{html} .= "<dl>\n<dt>".$html1."</dt>\n<dd>".$html2."</dd>\n</dl>\n";\r
-}\r
-\r
-#==============================================================================\r
-# ¥Ü¡¼¥ë¥É\r
-#==============================================================================\r
-sub bold {\r
-       my $self = shift;\r
-       my $text = shift;\r
-       return "<strong>".join("",$self->parse_line($text))."</strong>";\r
-}\r
-\r
-#==============================================================================\r
-# ¥¤¥¿¥ê¥Ã¥¯\r
-#==============================================================================\r
-sub italic {\r
-       my $self = shift;\r
-       my $text = shift;\r
-       return "<em>".join("",$self->parse_line($text))."</em>";\r
-}\r
-\r
-#==============================================================================\r
-# ²¼Àþ\r
-#==============================================================================\r
-sub underline {\r
-       my $self = shift;\r
-       my $text = shift;\r
-       return "<ins>".join("",$self->parse_line($text))."</ins>";\r
-}\r
-\r
-#==============================================================================\r
-# ÂǤÁ¾Ã¤·Àþ\r
-#==============================================================================\r
-sub denialline {\r
-       my $self = shift;\r
-       my $text = shift;\r
-       return "<del>".join("",$self->parse_line($text))."</del>";\r
-}\r
-\r
-#==============================================================================\r
-# URL¥¢¥ó¥«\r
-#==============================================================================\r
-sub url_anchor {\r
-       my $self = shift;\r
-       my $url  = shift;\r
-       my $name = shift;\r
-       \r
-       if($name eq ""){\r
-               $name = $url;\r
-       }\r
-       \r
-       if($url eq $name && $url=~/\.(gif|jpg|jpeg|bmp|png)$/i && $self->{'wiki'}->config('display_image')==1){\r
-               return "<img src=\"".$url."\">";\r
-       } else {\r
-               if($self->{wiki}->config('open_new_window')==1 &&\r
-                       ($self->{wiki}->config('inside_same_window')==0 ||\r
-                       ($self->{wiki}->config('inside_same_window')==1 && index($url,'://') > 0))){\r
-                       return "<a href=\"$url\" target=\"_blank\">".Util::escapeHTML($name)."</a>";\r
-               } else {\r
-                       return "<a href=\"$url\">".Util::escapeHTML($name)."</a>";\r
-               }\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# Wiki¥Ú¡¼¥¸¤Ø¤Î¥¢¥ó¥«\r
-#==============================================================================\r
-sub wiki_anchor {\r
-       my $self = shift;\r
-       my $page = shift;\r
-       my $name = shift;\r
-       \r
-       if(!defined($name) || $name eq ""){\r
-               $name = $page;\r
-       }\r
-       if($self->{wiki}->page_exists($page)){\r
-               return "<a href=\"".$self->{wiki}->create_page_url($page)."\" class=\"wikipage\">".\r
-                      &Util::escapeHTML($name)."</a>";\r
-       } else {\r
-               return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".\r
-                      "<a href=\"".$self->{wiki}->create_page_url($page)."\">?</a>";\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# ¤¿¤À¤Î¥Æ¥­¥¹¥È\r
-#==============================================================================\r
-sub text {\r
-       my $self = shift;\r
-       my $text = shift;\r
-       return &Util::escapeHTML($text);\r
-}\r
-\r
-#==============================================================================\r
-# ¥×¥é¥°¥¤¥ó\r
-#==============================================================================\r
-sub plugin {\r
-       my $self   = shift;\r
-       my $plugin = shift;\r
-       \r
-       my @result = $self->{wiki}->process_plugin($plugin,$self);\r
-       return @result;\r
-}\r
-\r
-#==============================================================================\r
-# ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó\r
-#==============================================================================\r
-sub l_plugin {\r
-       my $self   = shift;\r
-       my $plugin = shift;\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       }\r
-       \r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       my $result = $self->{wiki}->process_plugin($plugin,$self);\r
-       if(defined($result) && $result ne ""){\r
-               $self->{html} .= $result;\r
-       }\r
-}\r
-\r
-#==============================================================================\r
-# ¥¤¥á¡¼¥¸\r
-#==============================================================================\r
-sub l_image {\r
-       my $self = shift;\r
-       my $page = shift;\r
-       my $file = shift;\r
-       my $wiki = $self->{wiki};\r
-       \r
-       if($self->{para}==1){\r
-               $self->{html} .= "</p>\n";\r
-               $self->{para} = 0;\r
-       }\r
-       \r
-       $self->end_list;\r
-       $self->end_verbatim;\r
-       $self->end_table;\r
-       $self->end_quote;\r
-       \r
-       $self->{html} .= "<div><img src=\"".$wiki->create_url({action=>"ATTACH",page=>$page,file=>$file})."\"></div>\n";\r
-}\r
-\r
-#==============================================================================\r
-# ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸\r
-#==============================================================================\r
-sub error {\r
-       my $self  = shift;\r
-       my $label = shift;\r
-       \r
-       return "<span class=\"error\">".Util::escapeHTML($label)."</span>";\r
-}\r
-\r
-1;\r
+###############################################################################
+#
+# HTML¥Ñ¡¼¥µ
+#
+###############################################################################
+package Wiki::HTMLParser;
+use Wiki::Parser;
+use vars qw(@ISA);
+use strict;
+
+@ISA = qw(Wiki::Parser);
+#==============================================================================
+# ¥³¥ó¥¹¥È¥é¥¯¥¿
+#==============================================================================
+sub new {
+       my $class   = shift;
+       my $wiki    = shift;
+       my $mainflg = shift;
+       
+       if(!defined($mainflg) || $mainflg eq ""){ $mainflg = 0; }
+       
+       my $self = Wiki::Parser->new($wiki);
+       
+       $self->{html}  = "";
+       $self->{pre}   = "";
+       $self->{quote} = "";
+       $self->{table} = 0;
+       $self->{level} = 0;
+       $self->{para}  = 0;
+       $self->{p_cnt} = 0;
+       $self->{main}  = $mainflg;
+       return bless $self,$class;
+}
+
+#==============================================================================
+# ¥ê¥¹¥È
+#==============================================================================
+sub l_list {
+       my $self  = shift;
+       my $level = shift;
+       my $obj   = shift;
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       }
+       
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       my $html = join("",@$obj);
+       my $plus = 1;
+       
+       if($level < $self->{level}){ $plus = -1; }
+       if($level==$self->{level}){
+               $self->{html} .= "</li>\n";
+       }
+       while($level != $self->{level}){
+               if($plus==1){
+                       $self->{html} .= "<ul>\n";
+                       push(@{$self->{close_list}},"</ul>\n");
+               } else {
+                       $self->{html} .= "</li>\n";
+                       $self->{html} .= pop(@{$self->{close_list}});
+               }
+               $self->{level} += $plus;
+       }
+       
+       $self->{html} .= "<li>".$html;
+}
+
+#==============================================================================
+# ÈÖ¹æÉÕ¤­¥ê¥¹¥È
+#==============================================================================
+sub l_numlist {
+       my $self  = shift;
+       my $level = shift;
+       my $obj   = shift;
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       }
+       
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       my $html = join("",@$obj);
+       my $plus = 1;
+       
+       if($level < $self->{level}){ $plus = -1; }
+       if($level==$self->{level}){
+               $self->{html} .= "</li>\n";
+       }
+       while($level != $self->{level}){
+               if($plus==1){
+                       $self->{html} .= "<ol>\n";
+                       push(@{$self->{close_list}},"</ol>\n");
+               } else {
+                       $self->{html} .= "</li>\n";
+                       $self->{html} .= pop(@{$self->{close_list}});
+               }
+               $self->{level} += $plus;
+       }
+       $self->{html} .= "<li>".$html;
+}
+
+#==============================================================================
+# ¥ê¥¹¥È¤Î½ªÎ»
+#==============================================================================
+sub end_list {
+       my $self  = shift;
+       if ($self->{level}!=0) {
+               $self->{html} .= "</li>\n";
+               while($self->{level}!=0){
+                       $self->{html} .= pop(@{$self->{close_list}});
+                       $self->{level} += -1;
+               }
+       }
+}
+
+#==============================================================================
+# ¥Ø¥Ã¥É¥é¥¤¥ó
+#==============================================================================
+sub l_headline {
+       my $self  = shift;
+       my $level = shift;
+       my $obj   = shift;
+       my $wiki  = $self->{wiki};
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       }
+       
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       my $html  = join("",@$obj);
+       
+       # ¥á¥¤¥ó¤Îɽ¼¨Îΰè¤Ç¤Ê¤¤¤È¤­
+       if(!$self->{main}){
+               $self->{html} .= "<h".($level+1).">".$html."</h".($level+1).">\n";
+
+       # ¥á¥¤¥ó¤Îɽ¼¨Îΰè¤Î¾ì¹ç¤Ï¥¢¥ó¥«¤ò½ÐÎÏ
+       } else {
+               if($level==2){
+                       $self->{html} .= "<h".($level+1)."><a name=\"p".$self->{p_cnt}."\"><span class=\"sanchor\">&nbsp;</span>".
+                                        $html."</a></h".($level+1).">\n";
+               } else {
+                       $self->{html} .= "<h".($level+1)."><a name=\"p".$self->{p_cnt}."\">".$html."</a></h".($level+1).">\n";
+               }
+               # ¥Ñ¡¼¥ÈÊÔ½¸¤¬ON¤«¤ÄÊÔ½¸²Äǽ¤Ê¾ì¹ç¤ÏÊÔ½¸¥¢¥ó¥«¤ò½ÐÎÏ
+               if($self->{no_partedit}!=1){
+                       my $page = $wiki->get_CGI()->param("page");
+                       my $part_edit = "";
+                       # ¥Ñ¡¼¥È¥ê¥ó¥¯¤¬ON¤Î¾ì¹ç¤Ï°ÜÆ°ÍѤΥ¢¥ó¥«¤ò½ÐÎÏ
+                       if ($wiki->config("partlink") == 1) {
+                               $part_edit .= "<a class=\"partedit\" href=\"#\">TOP</a> ";
+                               $part_edit .= "<a class=\"partedit\" href=\"#p".($self->{p_cnt} - 1)."\">¢¬</a> ";
+                               $part_edit .= "<a class=\"partedit\" href=\"#p".($self->{p_cnt} + 1)."\">¢­</a> ";
+                       }
+                       # ¥Ñ¡¼¥ÈÊÔ½¸¤¬ON¤«¤ÄÊÔ½¸²Äǽ¤Ê¾ì¹ç¤ÏÊÔ½¸¥¢¥ó¥«¤ò½ÐÎÏ
+                       if($wiki->config("partedit")==1 && $wiki->can_modify_page($page)){
+                               unless(defined($self->{partedit}->{$page})){
+                                       $self->{partedit}->{$page} = 0;
+                               } else {
+                                       $self->{partedit}->{$page}++;
+                               }
+                               # InterWiki·Á¼°¤Î¾ì¹ç
+                               my $full = $page;
+                               my $path = $self->{wiki}->config('script_name');
+                               if(index($page,":")!=-1){
+                                       ($path,$page) = split(/:/,$page);
+                                       $path = $self->{wiki}->config('script_name')."/$path";
+                               }
+                               $part_edit .= "<a class=\"partedit\" href=\"$path?action=EDIT".
+                                             "&amp;page=".&Util::url_encode($page).
+                                             "&amp;artno=".$self->{partedit}->{$full}."\" rel=\"nofollow\">ÊÔ½¸</a>";
+                       }
+                       if($part_edit ne ""){
+                               $self->{html} .= "<div class=\"partedit\">$part_edit</div>\n";
+                       }
+               }
+               
+       }
+       $self->{p_cnt}++;
+}
+
+#==============================================================================
+# ¿åÊ¿Àþ
+#==============================================================================
+sub l_line {
+       my $self = shift;
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       }
+       
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       $self->{html} .= "<hr>\n";
+}
+
+#==============================================================================
+# ÃÊÍî¶èÀÚ¤ê
+#==============================================================================
+sub l_paragraph {
+       my $self = shift;
+       
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       } elsif($self->{wiki}->config('br_mode')==1){
+               $self->{html} .= "<br>\n";
+       }
+}
+
+#==============================================================================
+# À°·ÁºÑ¥Æ¥­¥¹¥È
+#==============================================================================
+sub l_verbatim {
+       my $self  = shift;
+       my $text  = shift;
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       }
+       
+       $self->end_list;
+       $self->end_table;
+       $self->end_quote;
+       
+       $text =~ s/^\s//;
+       $self->{pre} .= Util::escapeHTML($text)."\n";
+}
+
+sub end_verbatim {
+       my $self  = shift;
+       if($self->{pre} ne ""){
+               $self->{html} .= "<pre>".$self->{pre}."</pre>\n";
+               $self->{pre} = "";
+       }
+}
+
+#==============================================================================
+# ¥Æ¡¼¥Ö¥ë
+#==============================================================================
+sub l_table {
+       my $self = shift;
+       my $row  = shift;
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_quote;
+       
+       if($self->{table}==0){
+               $self->{table}=1;
+               $self->{html} .= "<table>\n";
+               $self->{html} .= "<tr>\n";
+               foreach(@$row){
+                       my $html = join("",@$_);
+                       $self->{html} .= "<th>".$html."</th>\n";
+               }
+               $self->{html} .= "</tr>\n";
+       } else {
+               $self->{table}=2;
+               $self->{html} .= "<tr>\n";
+               foreach(@$row){
+                       my $html = join("",@$_);
+                       $self->{html} .= "<td>".$html."</td>\n";
+               }
+               $self->{html} .= "</tr>\n";
+       }
+}
+
+sub end_table {
+       my $self = shift;
+       if($self->{table}!=0){
+               $self->{table} = 0;
+               $self->{html} .= "</table>\n";
+       }
+}
+
+#==============================================================================
+# ¥Ñ¡¼¥¹½ªÎ»»þ¤Î½èÍý
+#==============================================================================
+sub end_parse {
+       my $self = shift;
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       }
+}
+
+#==============================================================================
+# ¹Ô½ñ¼°¤Ë³ºÅö¤·¤Ê¤¤¹Ô
+#==============================================================================
+sub l_text {
+       my $self = shift;
+       my $obj  = shift;
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       my $html = join("",@$obj);
+       
+       if($self->{para}==0){
+               $self->{html} .= "<p>";
+               $self->{para} = 1;
+       }
+       $self->{html} .= $html;
+       
+       # br¥â¡¼¥É¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï<br>¤ò­¤¹
+       if($self->{wiki}->config('br_mode')==1){
+               $self->{html} .= "<br>\n";
+       }
+}
+
+#==============================================================================
+# °úÍÑ
+#==============================================================================
+sub l_quotation {
+       my $self = shift;
+       my $obj  = shift;
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       my $html = join("",@$obj);
+       $self->{quote} .= "<p>".$html."</p>\n";
+}
+
+sub end_quote {
+       my $self = shift;
+       if($self->{quote} ne ""){
+               $self->{html} .= "<blockquote>".$self->{quote}."</blockquote>\n";
+               $self->{quote} = "";
+       }
+}
+
+#==============================================================================
+# ÀâÌÀ
+#==============================================================================
+sub l_explanation {
+       my $self = shift;
+       my $obj1 = shift;
+       my $obj2 = shift;
+       
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       my $html1 = join("",@$obj1);
+       my $html2 = join("",@$obj2);
+       
+       $self->{html} .= "<dl>\n<dt>".$html1."</dt>\n<dd>".$html2."</dd>\n</dl>\n";
+}
+
+#==============================================================================
+# ¥Ü¡¼¥ë¥É
+#==============================================================================
+sub bold {
+       my $self = shift;
+       my $text = shift;
+       return "<strong>".join("",$self->parse_line($text))."</strong>";
+}
+
+#==============================================================================
+# ¥¤¥¿¥ê¥Ã¥¯
+#==============================================================================
+sub italic {
+       my $self = shift;
+       my $text = shift;
+       return "<em>".join("",$self->parse_line($text))."</em>";
+}
+
+#==============================================================================
+# ²¼Àþ
+#==============================================================================
+sub underline {
+       my $self = shift;
+       my $text = shift;
+       return "<ins>".join("",$self->parse_line($text))."</ins>";
+}
+
+#==============================================================================
+# ÂǤÁ¾Ã¤·Àþ
+#==============================================================================
+sub denialline {
+       my $self = shift;
+       my $text = shift;
+       return "<del>".join("",$self->parse_line($text))."</del>";
+}
+
+#==============================================================================
+# URL¥¢¥ó¥«
+#==============================================================================
+sub url_anchor {
+       my $self = shift;
+       my $url  = shift;
+       my $name = shift;
+       
+       if($name eq ""){
+               $name = $url;
+       }
+       
+       if($url eq $name && $url=~/\.(gif|jpg|jpeg|bmp|png)$/i && $self->{'wiki'}->config('display_image')==1){
+               return "<img src=\"".$url."\">";
+       } else {
+               if($self->{wiki}->config('open_new_window')==1 &&
+                       ($self->{wiki}->config('inside_same_window')==0 ||
+                       ($self->{wiki}->config('inside_same_window')==1 && index($url,'://') > 0))){
+                       return "<a href=\"$url\" target=\"_blank\">".Util::escapeHTML($name)."</a>";
+               } else {
+                       return "<a href=\"$url\">".Util::escapeHTML($name)."</a>";
+               }
+       }
+}
+
+#==============================================================================
+# Wiki¥Ú¡¼¥¸¤Ø¤Î¥¢¥ó¥«
+#==============================================================================
+sub wiki_anchor {
+       my $self = shift;
+       my $page = shift;
+       my $name = shift;
+       
+       if(!defined($name) || $name eq ""){
+               $name = $page;
+       }
+       if($self->{wiki}->page_exists($page)){
+               return "<a href=\"".$self->{wiki}->create_page_url($page)."\" class=\"wikipage\">".
+                      &Util::escapeHTML($name)."</a>";
+       } else {
+               return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
+                      "<a href=\"".$self->{wiki}->create_page_url($page)."\">?</a>";
+       }
+}
+
+#==============================================================================
+# ¤¿¤À¤Î¥Æ¥­¥¹¥È
+#==============================================================================
+sub text {
+       my $self = shift;
+       my $text = shift;
+       return &Util::escapeHTML($text);
+}
+
+#==============================================================================
+# ¥×¥é¥°¥¤¥ó
+#==============================================================================
+sub plugin {
+       my $self   = shift;
+       my $plugin = shift;
+       
+       my @result = $self->{wiki}->process_plugin($plugin,$self);
+       return @result;
+}
+
+#==============================================================================
+# ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó
+#==============================================================================
+sub l_plugin {
+       my $self   = shift;
+       my $plugin = shift;
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       }
+       
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       my $result = $self->{wiki}->process_plugin($plugin,$self);
+       if(defined($result) && $result ne ""){
+               $self->{html} .= $result;
+       }
+}
+
+#==============================================================================
+# ¥¤¥á¡¼¥¸
+#==============================================================================
+sub l_image {
+       my $self = shift;
+       my $page = shift;
+       my $file = shift;
+       my $wiki = $self->{wiki};
+       
+       if($self->{para}==1){
+               $self->{html} .= "</p>\n";
+               $self->{para} = 0;
+       }
+       
+       $self->end_list;
+       $self->end_verbatim;
+       $self->end_table;
+       $self->end_quote;
+       
+       $self->{html} .= "<div><img src=\"".$wiki->create_url({action=>"ATTACH",page=>$page,file=>$file})."\"></div>\n";
+}
+
+#==============================================================================
+# ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸
+#==============================================================================
+sub error {
+       my $self  = shift;
+       my $label = shift;
+       
+       return "<span class=\"error\">".Util::escapeHTML($label)."</span>";
+}
+
+1;