OSDN Git Service

改行コードをLFに統一。
[fswiki/fswiki.git] / tools / wiki2html.pl
index 3558c12..f235059 100644 (file)
-#!/usr/local/bin/perl\r
-############################################################\r
-#\r
-# Wiki¥Õ¥©¡¼¥Þ¥Ã¥È¤«¤éHTML¤òÀ¸À®¤¹¤ë¥¹¥¯¥ê¥×¥È\r
-#\r
-############################################################\r
-use lib "$ENV{'FSWIKI_HOME'}/lib";\r
-use Wiki;\r
-use Util;\r
-use Jcode;\r
-use Cwd;\r
-\r
-#===========================================================\r
-# °ú¿ô¤¬Â­¤ê¤Ê¤¤\r
-#===========================================================\r
-if($#ARGV==-1){\r
-       die "wiki2html.pl filename [-title=title] [-output=sjis|euc]\n";\r
-}\r
-\r
-#===========================================================\r
-# ÊÑ¿ô¤Î½àÈ÷\r
-#===========================================================\r
-my $from    = "";\r
-my $title   = "";\r
-my $css     = "";\r
-my $output  = "euc";\r
-my $count   = 0;\r
-my $current = cwd();\r
-chdir($ENV{'FSWIKI_HOME'});\r
-\r
-#===========================================================\r
-# ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Î²òÀÏ\r
-#===========================================================\r
-foreach(@ARGV){\r
-       if($count==0){\r
-               $from = $_;\r
-       } else {\r
-               my ($key,$value)=split(/=/,$_);\r
-               if($key eq "-title"){\r
-                       $title = $value;\r
-               } elsif($key eq "-css"){\r
-                       $css = $value;\r
-               } elsif($key eq "-input"){\r
-                       $input = $value;\r
-               } elsif($key eq "-output"){\r
-                       $output = $value;\r
-               } elsif($key eq "-farm"){\r
-                       $farm = $value;\r
-               } else {\r
-                       die $key." is Unknown Option.\n";\r
-               }\r
-       }\r
-       $count++;\r
-\r
-}\r
-\r
-if($title eq ""){\r
-       $title = $from;\r
-       $title =~ s/.*\///;\r
-       $title =~ s/\.wiki//;\r
-       #$title =~ s/%([0-9a-f]{2})/pack("C",$1)/ige;\r
-}\r
-\r
-my $url = $from;\r
-$url =~ s/\?.*$//;\r
-my $wiki = Wiki::Wiki2HTML->new('setup.dat', CGI->new($url));\r
-\r
-if($farm){\r
-       $farm =~ s|\/$||;\r
-       $farm=~/^\// or $farm = "/$farm";\r
-       $wiki->config('data_dir'   , $wiki->config('data_dir'  ).$farm);\r
-       $wiki->config('config_dir' , $wiki->config('config_dir').$farm);\r
-}\r
-\r
-#===========================================================\r
-# Wiki¥½¡¼¥¹¤ò¼èÆÀ\r
-#===========================================================\r
-my $source = "";\r
-if(index($from,"http://")==0 || index($from,"https://")==0){\r
-       # HTTP·Ðͳ¤Ç¥½¡¼¥¹¤ò¼èÆÀ\r
-       $source = &Util::get_response($wiki,$from);\r
-} else {\r
-       # ¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¤«¤é¥½¡¼¥¹¤ò¼èÆÀ\r
-       chdir($current);\r
-       open(DATA,$from) or die "File Open Error :$from\n";\r
-       while(<DATA>){\r
-               $source .= $_;\r
-       }\r
-       close(DATA);\r
-       chdir($ENV{'FSWIKI_HOME'});\r
-}\r
-&Jcode::convert(\$source,"euc");\r
-\r
-#===========================================================\r
-# HTMLÀ¸À®\r
-#===========================================================\r
-my $buf = "<html>\n".\r
-          "<head>\n".\r
-          "  <title>".Util::escapeHTML($title)."</title>\n";\r
-if($output eq 'euc'){\r
-       $buf .= "  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">\n";\r
-} else {\r
-       $buf .= "  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";\r
-}\r
-\r
-if($css ne ""){\r
-       $buf .= "  <link rel=\"stylesheet\" type=\"text/css\" href=\"".$css."\">\n";\r
-}\r
-$buf .= "</head>\n".\r
-        "<body>\n".\r
-        "<h1>@{[Util::escapeHTML($title)]}</h1>\n".\r
-        $wiki->process_wiki($source).\r
-        "</body>\n".\r
-        "</html>\n";\r
-\r
-&Jcode::convert(\$buf,$output);\r
-print $buf;\r
-\r
-package Wiki::Wiki2HTML;\r
-use base qw(Wiki);\r
-\r
-sub process_wiki {\r
-       my $self    = shift;\r
-       my $source  = shift;\r
-       my $mainflg = shift;\r
-       \r
-       if($self->{parse_times} >= 50){\r
-               return $self->error("Wiki::process_wiki¤Î¸Æ¤Ó½Ð¤·²ó¿ô¤¬¾å¸Â¤ò±Û¤¨¤Þ¤·¤¿¡£");\r
-       }\r
-       \r
-       $self->{parse_times}++;\r
-       my $parser = Wiki::Wiki2HTMLParser->new($self,$mainflg);\r
-       $parser->parse($source);\r
-       $self->{parse_times}--;\r
-       \r
-       return $parser->{html};\r
-}\r
-\r
-package Wiki::Wiki2HTMLParser;\r
-use base qw(Wiki::HTMLParser);\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
-               my $link = "@{[Util::url_encode(Util::url_encode($page))]}.html";\r
-               return qq|<a href="$link" class="wikipage">@{[Util::escapeHTML($name)]}</a>|;\r
-       } else {\r
-               return qq|<span class="nopage">@{[Util::escapeHTML($name)]}</span><a href="#">?</a>|;\r
-       }\r
-}\r
-\r
-#===========================================================\r
-# CGI.pm¤Î¥â¥Ã¥¯¥ª¥Ö¥¸¥§¥¯¥È\r
-#===========================================================\r
-package CGI;\r
-\r
-sub new {\r
-       my $class = shift;\r
-       my $self  = {};\r
-       $self->{url} = shift;\r
-       return bless $self, $class;\r
-}\r
-\r
-sub url {\r
-       my $self = shift;\r
-       return $self;\r
-}\r
-\r
-sub get_session {\r
-       return undef;\r
-}\r
+#!/usr/local/bin/perl
+############################################################
+#
+# Wiki¥Õ¥©¡¼¥Þ¥Ã¥È¤«¤éHTML¤òÀ¸À®¤¹¤ë¥¹¥¯¥ê¥×¥È
+#
+############################################################
+use lib "$ENV{'FSWIKI_HOME'}/lib";
+use Wiki;
+use Util;
+use Jcode;
+use Cwd;
+
+#===========================================================
+# °ú¿ô¤¬Â­¤ê¤Ê¤¤
+#===========================================================
+if($#ARGV==-1){
+       die "wiki2html.pl filename [-title=title] [-output=sjis|euc]\n";
+}
+
+#===========================================================
+# ÊÑ¿ô¤Î½àÈ÷
+#===========================================================
+my $from    = "";
+my $title   = "";
+my $css     = "";
+my $output  = "euc";
+my $count   = 0;
+my $current = cwd();
+chdir($ENV{'FSWIKI_HOME'});
+
+#===========================================================
+# ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Î²òÀÏ
+#===========================================================
+foreach(@ARGV){
+       if($count==0){
+               $from = $_;
+       } else {
+               my ($key,$value)=split(/=/,$_);
+               if($key eq "-title"){
+                       $title = $value;
+               } elsif($key eq "-css"){
+                       $css = $value;
+               } elsif($key eq "-input"){
+                       $input = $value;
+               } elsif($key eq "-output"){
+                       $output = $value;
+               } elsif($key eq "-farm"){
+                       $farm = $value;
+               } else {
+                       die $key." is Unknown Option.\n";
+               }
+       }
+       $count++;
+
+}
+
+if($title eq ""){
+       $title = $from;
+       $title =~ s/.*\///;
+       $title =~ s/\.wiki//;
+       #$title =~ s/%([0-9a-f]{2})/pack("C",$1)/ige;
+}
+
+my $url = $from;
+$url =~ s/\?.*$//;
+my $wiki = Wiki::Wiki2HTML->new('setup.dat', CGI->new($url));
+
+if($farm){
+       $farm =~ s|\/$||;
+       $farm=~/^\// or $farm = "/$farm";
+       $wiki->config('data_dir'   , $wiki->config('data_dir'  ).$farm);
+       $wiki->config('config_dir' , $wiki->config('config_dir').$farm);
+}
+
+#===========================================================
+# Wiki¥½¡¼¥¹¤ò¼èÆÀ
+#===========================================================
+my $source = "";
+if(index($from,"http://")==0 || index($from,"https://")==0){
+       # HTTP·Ðͳ¤Ç¥½¡¼¥¹¤ò¼èÆÀ
+       $source = &Util::get_response($wiki,$from);
+} else {
+       # ¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¤«¤é¥½¡¼¥¹¤ò¼èÆÀ
+       chdir($current);
+       open(DATA,$from) or die "File Open Error :$from\n";
+       while(<DATA>){
+               $source .= $_;
+       }
+       close(DATA);
+       chdir($ENV{'FSWIKI_HOME'});
+}
+&Jcode::convert(\$source,"euc");
+
+#===========================================================
+# HTMLÀ¸À®
+#===========================================================
+my $buf = "<html>\n".
+          "<head>\n".
+          "  <title>".Util::escapeHTML($title)."</title>\n";
+if($output eq 'euc'){
+       $buf .= "  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">\n";
+} else {
+       $buf .= "  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
+}
+
+if($css ne ""){
+       $buf .= "  <link rel=\"stylesheet\" type=\"text/css\" href=\"".$css."\">\n";
+}
+$buf .= "</head>\n".
+        "<body>\n".
+        "<h1>@{[Util::escapeHTML($title)]}</h1>\n".
+        $wiki->process_wiki($source).
+        "</body>\n".
+        "</html>\n";
+
+&Jcode::convert(\$buf,$output);
+print $buf;
+
+package Wiki::Wiki2HTML;
+use base qw(Wiki);
+
+sub process_wiki {
+       my $self    = shift;
+       my $source  = shift;
+       my $mainflg = shift;
+       
+       if($self->{parse_times} >= 50){
+               return $self->error("Wiki::process_wiki¤Î¸Æ¤Ó½Ð¤·²ó¿ô¤¬¾å¸Â¤ò±Û¤¨¤Þ¤·¤¿¡£");
+       }
+       
+       $self->{parse_times}++;
+       my $parser = Wiki::Wiki2HTMLParser->new($self,$mainflg);
+       $parser->parse($source);
+       $self->{parse_times}--;
+       
+       return $parser->{html};
+}
+
+package Wiki::Wiki2HTMLParser;
+use base qw(Wiki::HTMLParser);
+
+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)){
+               my $link = "@{[Util::url_encode(Util::url_encode($page))]}.html";
+               return qq|<a href="$link" class="wikipage">@{[Util::escapeHTML($name)]}</a>|;
+       } else {
+               return qq|<span class="nopage">@{[Util::escapeHTML($name)]}</span><a href="#">?</a>|;
+       }
+}
+
+#===========================================================
+# CGI.pm¤Î¥â¥Ã¥¯¥ª¥Ö¥¸¥§¥¯¥È
+#===========================================================
+package CGI;
+
+sub new {
+       my $class = shift;
+       my $self  = {};
+       $self->{url} = shift;
+       return bless $self, $class;
+}
+
+sub url {
+       my $self = shift;
+       return $self;
+}
+
+sub get_session {
+       return undef;
+}