2 ############################################################
4 # Wiki¥Õ¥©¡¼¥Þ¥Ã¥È¤«¤éHTML¤òÀ¸À®¤¹¤ë¥¹¥¯¥ê¥×¥È
6 ############################################################
7 use lib "$ENV{'FSWIKI_HOME'}/lib";
13 #===========================================================
15 #===========================================================
17 die "wiki2html.pl filename [-title=title] [-css=stylesheet] [-output=sjis|euc] [-farm=farmname]\n";
20 #===========================================================
22 #===========================================================
31 chdir($ENV{'FSWIKI_HOME'});
33 #===========================================================
34 # ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Î²òÀÏ
35 #===========================================================
40 my ($key,$value)=split(/=/,$_);
43 } elsif($key eq "-css"){
45 } elsif($key eq "-input"){
47 } elsif($key eq "-output"){
49 } elsif($key eq "-farm"){
52 die $key." is Unknown Option.\n";
63 #$title =~ s/%([0-9a-f]{2})/pack("C",$1)/ige;
68 my $wiki = Wiki::Wiki2HTML->new('setup.dat', CGI->new($url));
72 $farm=~/^\// or $farm = "/$farm";
73 $wiki->config('data_dir' , $wiki->config('data_dir' ).$farm);
74 $wiki->config('config_dir' , $wiki->config('config_dir').$farm);
77 #===========================================================
79 #===========================================================
81 if(index($from,"http://")==0 || index($from,"https://")==0){
82 # HTTP·Ðͳ¤Ç¥½¡¼¥¹¤ò¼èÆÀ
83 $source = &Util::get_response($wiki,$from);
85 # ¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¤«¤é¥½¡¼¥¹¤ò¼èÆÀ
87 open(DATA,$from) or die "File Open Error :$from\n";
92 chdir($ENV{'FSWIKI_HOME'});
94 &Jcode::convert(\$source,"euc");
96 #===========================================================
98 #===========================================================
101 " <title>".Util::escapeHTML($title)."</title>\n";
102 if($output eq 'euc'){
103 $buf .= " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=EUC-JP\">\n";
105 $buf .= " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
109 $buf .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"".$css."\">\n";
113 "<h1>@{[Util::escapeHTML($title)]}</h1>\n".
114 $wiki->process_wiki($source).
118 &Jcode::convert(\$buf,$output);
121 package Wiki::Wiki2HTML;
129 if($self->{parse_times} >= 50){
130 return $self->error("Wiki::process_wiki¤Î¸Æ¤Ó½Ð¤·²ó¿ô¤¬¾å¸Â¤ò±Û¤¨¤Þ¤·¤¿¡£");
133 $self->{parse_times}++;
134 my $parser = Wiki::Wiki2HTMLParser->new($self,$mainflg);
135 $parser->parse($source);
136 $self->{parse_times}--;
138 return $parser->{html};
141 package Wiki::Wiki2HTMLParser;
142 use base qw(Wiki::HTMLParser);
149 if(!defined($name) || $name eq ""){
152 if($self->{wiki}->page_exists($page)){
153 my $link = "@{[Util::url_encode(Util::url_encode($page))]}.html";
154 return qq|<a href="$link" class="wikipage">@{[Util::escapeHTML($name)]}</a>|;
156 return qq|<span class="nopage">@{[Util::escapeHTML($name)]}</span><a href="#">?</a>|;
160 #===========================================================
161 # CGI.pm¤Î¥â¥Ã¥¯¥ª¥Ö¥¸¥§¥¯¥È
162 #===========================================================
168 $self->{url} = shift;
169 return bless $self, $class;