2 ############################################################
4 # Wiki¥Õ¥©¡¼¥Þ¥Ã¥È¤«¤éHTML¤òÀ¸À®¤¹¤ë¥¹¥¯¥ê¥×¥È
6 ############################################################
7 use lib "$ENV{'FSWIKI_HOME'}/lib";
13 #===========================================================
15 #===========================================================
17 die "wiki2html.pl filename [-title=title] [-output=sjis|euc]\n";
20 #===========================================================
22 #===========================================================
29 chdir($ENV{'FSWIKI_HOME'});
31 #===========================================================
32 # ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Î²òÀÏ
33 #===========================================================
38 my ($key,$value)=split(/=/,$_);
41 } elsif($key eq "-css"){
43 } elsif($key eq "-input"){
45 } elsif($key eq "-output"){
47 } elsif($key eq "-farm"){
50 die $key." is Unknown Option.\n";
61 #$title =~ s/%([0-9a-f]{2})/pack("C",$1)/ige;
66 my $wiki = Wiki::Wiki2HTML->new('setup.dat', CGI->new($url));
70 $farm=~/^\// or $farm = "/$farm";
71 $wiki->config('data_dir' , $wiki->config('data_dir' ).$farm);
72 $wiki->config('config_dir' , $wiki->config('config_dir').$farm);
75 #===========================================================
77 #===========================================================
79 if(index($from,"http://")==0 || index($from,"https://")==0){
80 # HTTP·Ðͳ¤Ç¥½¡¼¥¹¤ò¼èÆÀ
81 $source = &Util::get_response($wiki,$from);
83 # ¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¤«¤é¥½¡¼¥¹¤ò¼èÆÀ
85 open(DATA,$from) or die "File Open Error :$from\n";
90 chdir($ENV{'FSWIKI_HOME'});
92 &Jcode::convert(\$source,"euc");
94 #===========================================================
96 #===========================================================
99 " <title>".Util::escapeHTML($title)."</title>\n";
100 if($output eq 'euc'){
101 $buf .= " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">\n";
103 $buf .= " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
107 $buf .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"".$css."\">\n";
111 "<h1>@{[Util::escapeHTML($title)]}</h1>\n".
112 $wiki->process_wiki($source).
116 &Jcode::convert(\$buf,$output);
119 package Wiki::Wiki2HTML;
127 if($self->{parse_times} >= 50){
128 return $self->error("Wiki::process_wiki¤Î¸Æ¤Ó½Ð¤·²ó¿ô¤¬¾å¸Â¤ò±Û¤¨¤Þ¤·¤¿¡£");
131 $self->{parse_times}++;
132 my $parser = Wiki::Wiki2HTMLParser->new($self,$mainflg);
133 $parser->parse($source);
134 $self->{parse_times}--;
136 return $parser->{html};
139 package Wiki::Wiki2HTMLParser;
140 use base qw(Wiki::HTMLParser);
147 if(!defined($name) || $name eq ""){
150 if($self->{wiki}->page_exists($page)){
151 my $link = "@{[Util::url_encode(Util::url_encode($page))]}.html";
152 return qq|<a href="$link" class="wikipage">@{[Util::escapeHTML($name)]}</a>|;
154 return qq|<span class="nopage">@{[Util::escapeHTML($name)]}</span><a href="#">?</a>|;
158 #===========================================================
159 # CGI.pm¤Î¥â¥Ã¥¯¥ª¥Ö¥¸¥§¥¯¥È
160 #===========================================================
166 $self->{url} = shift;
167 return bless $self, $class;