1 ################################################################################
3 # Wiki¥Õ¥©¡¼¥Þ¥Ã¥È¤Îʸ»úÎó¤ò¥Ñ¡¼¥¹¤·¡¢½ñ¼°¤ËÂбþ¤·¤¿¥Õ¥Ã¥¯¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤ò¹Ô¤¤¤Þ¤¹¡£
4 # Wiki::Parser¤ò·Ñ¾µ¤·¡¢¤³¤ì¤é¤Î¥Õ¥Ã¥¯¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ë¤³¤È¤ÇǤ°Õ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ø¤ÎÊÑ´¹¤¬²Äǽ¤Ç¤¹¡£
6 ################################################################################
12 $Wiki::Parser::keyword = undef;
13 $Wiki::Parser::interwiki = undef;
15 #===============================================================================
20 # my $parser = Wiki::HTMLParser->new($wiki);
22 #===============================================================================
28 $self->{wiki} = $wiki;
30 # Keyword¤ÈInterWiki¤Ï¹â®²½¤Î¤¿¤á¥â¥¸¥å¡¼¥ëÊÑ¿ô¤È¤·¤ÆÊÝ»ý¤¹¤ë
31 #¡Ê¤¿¤À¤·mod_perl+Farm¤Î¾ì¹ç¤Ï¥À¥á¤Ê¤Î¤ÇËè²ónew¤¹¤ë¡Ë
32 if(exists $ENV{MOD_PERL}){
33 $self->{interwiki} = Wiki::InterWiki->new($wiki);
34 $self->{keyword} = Wiki::Keyword->new($wiki,$self->{interwiki});
36 unless(defined($Wiki::Parser::keyword)){
37 $Wiki::Parser::interwiki = Wiki::InterWiki->new($wiki);
38 $Wiki::Parser::keyword = Wiki::Keyword->new($wiki,$Wiki::Parser::interwiki);
40 $self->{interwiki} = $Wiki::Parser::interwiki;
41 $self->{keyword} = $Wiki::Parser::keyword;
48 return bless $self,$class;
51 #===============================================================================
53 # ¥Ñ¡¼¥¹½èÍý¤ò³«»Ï¤·¤Þ¤¹¡£
56 # $parser->parse($source);
58 #===============================================================================
66 my @lines = split(/\n/,$source);
68 foreach my $line (@lines){
72 $self->multi_explanation($line);
74 my $word1 = substr($line,0,1);
75 my $word2 = substr($line,0,2);
76 my $word3 = substr($line,0,3);
79 if($line eq "" && !$self->{block}){
84 # ¥Ö¥í¥Ã¥¯½ñ¼°¤Î¥¨¥¹¥±¡¼¥×
85 if(!$self->{block} && ($word2 eq "\\\\" || $word1 eq "\\")){
86 my @obj = $self->parse_line(substr($line, 1));
91 # ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó
92 if($line =~ /^\{\{(.+\}\})$/){
94 my $plugin = $self->{wiki}->parse_inline_plugin($1);
95 my $info = $self->{wiki}->get_plugin_info($plugin->{command});
96 if($info->{TYPE} eq "paragraph"){
97 $self->l_plugin($plugin);
99 my @obj = $self->parse_line($line);
100 $self->l_text(\@obj);
104 } elsif($line =~ /^\{\{(.+)$/){
105 if ($self->{block}) {
106 my $plugin = $self->{wiki}->parse_inline_plugin($1);
107 my $info = $self->{wiki}->get_plugin_info($plugin->{command});
108 $self->{block}->{level}++ if($info->{TYPE} eq "block");
109 $self->{block}->{args}->[0] .= $line."\n";
112 my $plugin = $self->{wiki}->parse_inline_plugin($1);
113 my $info = $self->{wiki}->get_plugin_info($plugin->{command});
114 if($info->{TYPE} eq "block"){
115 unshift(@{$plugin->{args}}, "");
116 $self->{block} = $plugin;
117 $self->{block}->{level} = 0;
119 my @obj = $self->parse_line($line);
120 $self->l_text(\@obj);
126 if ($self->{block}->{level} > 0) {
127 $self->{block}->{level}--;
128 $self->{block}->{args}->[0] .= $line."\n";
131 my $plugin = $self->{block};
132 delete($self->{block});
133 $self->l_plugin($plugin);
135 $self->{block}->{args}->[0] .= $line."\n";
141 if($word1 eq " " || $word1 eq "\t"){
142 $self->l_verbatim($line);
145 } elsif($word3 eq "!!!"){
146 my @obj = $self->parse_line(substr($line,3));
147 $self->l_headline(1,\@obj);
149 } elsif($word2 eq "!!"){
150 my @obj = $self->parse_line(substr($line,2));
151 $self->l_headline(2,\@obj);
153 } elsif($word1 eq "!"){
154 my @obj = $self->parse_line(substr($line,1));
155 $self->l_headline(3,\@obj);
158 } elsif($word3 eq "***"){
159 my @obj = $self->parse_line(substr($line,3));
160 $self->l_list(3,\@obj);
162 } elsif($word2 eq "**"){
163 my @obj = $self->parse_line(substr($line,2));
164 $self->l_list(2,\@obj);
166 } elsif($word1 eq "*"){
167 my @obj = $self->parse_line(substr($line,1));
168 $self->l_list(1,\@obj);
171 } elsif($word3 eq "+++"){
172 my @obj = $self->parse_line(substr($line,3));
173 $self->l_numlist(3,\@obj);
175 } elsif($word2 eq "++"){
176 my @obj = $self->parse_line(substr($line,2));
177 $self->l_numlist(2,\@obj);
179 } elsif($word1 eq "+"){
180 my @obj = $self->parse_line(substr($line,1));
181 $self->l_numlist(1,\@obj);
184 } elsif($line eq "----"){
188 } elsif($word2 eq '""'){
189 my @obj = $self->parse_line(substr($line,2));
190 $self->l_quotation(\@obj);
193 } elsif(index($line,":")==0 && index($line,":",1)!=-1){
194 if(index($line,":::")==0){
195 $self->{dd} .= substr($line,3);
198 if($self->{dt} ne "" || $self->{dd} ne ""){
199 $self->multi_explanation;
201 if(index($line,"::")==0){
202 $self->{dt} = substr($line,2);
203 $self->{dl_flag} = 1;
206 my $dt = substr($line,1,index($line,":",1)-1);
207 my $dd = substr($line,index($line,":",1)+1);
208 my @obj1 = $self->parse_line($dt);
209 my @obj2 = $self->parse_line($dd);
210 $self->l_explanation(\@obj1,\@obj2);
213 } elsif($word1 eq ","){
217 my @spl = map {/^"(.*)"$/ ? scalar($_ = $1, s/\"\"/\"/g, $_) : $_}
218 ($line =~ /,\s*(\"[^\"]*(?:\"\"[^\"]*)*\"|[^,]*)/g);
220 foreach my $value (@spl){
221 my @cell = $self->parse_line($value);
224 $self->l_table(\@array);
227 } elsif($word2 eq "//"){
231 my @obj = $self->parse_line($line);
232 $self->l_text(\@obj);
237 $self->multi_explanation;
239 # ¥Ñ¡¼¥¹Ãæ¤Î¥Ö¥í¥Ã¥¯¥×¥é¥°¥¤¥ó¤¬¤¢¤Ã¤¿¾ì¹ç¡¢¤È¤ê¤¢¤¨¤ºÉ¾²Á¤·¤Æ¤ª¤¯¡©
241 my $plugin = $self->{block};
242 delete($self->{block});
243 $self->l_plugin($plugin);
249 #===============================================================================
251 # Ê£¿ô¹Ô¤ÎÀâÌÀʸ¤ò½èÍý¤·¤Þ¤¹¡£
253 #===============================================================================
254 sub multi_explanation {
257 if($self->{dl_flag}==1 && (index($line,":")!=0 || !defined($line))){
258 my @obj1 = $self->parse_line($self->{dt});
259 my @obj2 = $self->parse_line($self->{dd});
260 $self->l_explanation(\@obj1,\@obj2);
261 $self->{dl_flag} = 0;
267 #===============================================================================
269 # £±¹Ôʬ¤ò¥Ñ¡¼¥¹¤·¤Þ¤¹¡£parse¥á¥½¥Ã¥É¤ÎÃ椫¤éɬÍפ˱þ¤¸¤Æ¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
271 #===============================================================================
273 my ($self, $source) = @_;
275 return () if (not defined $source);
281 # $source ¤¬¶õ¤Ë¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤¹¡£
283 while ($source ne q{}) {
285 # ¤É¤Î¥¤¥ó¥é¥¤¥ó Wiki ½ñ¼°¤ÎÀèƬ¤Ë¤â match ¤·¤Ê¤¤¾ì¹ç
286 if (!($source =~ /^(.*?)((?:\{\{|\[\[?|https?:|mailto:|f(?:tp:|ile:)|'''?|==|__|<<).*)$/)) {
287 # ¥¡¼¥ï¡¼¥É¸¡º÷¡¦ÃÖ´¹½èÍý¤Î¤ß¼Â»Ü¤·¤Æ½ªÎ»¤¹¤ë
288 push @array, $self->_parse_line_keyword($pre . $source);
292 $pre .= $1; # match ¤·¤Ê¤«¤Ã¤¿ÀèƬÉôʬ¤Ïί¤á¤Æ¤ª¤¤¤Æ¸å¤Ç½èÍý¤¹¤ë
293 $source = $2; # match Éôʬ¤Ï¸å³½èÍý¤Ë¤Æ¾ÜºÙ¥Á¥§¥Ã¥¯¤ò¹Ô¤¦
297 if ($source =~ /^\{\{/) {
299 my $plugin = $self->{wiki}->parse_inline_plugin($source);
302 push @parsed, $self->parse_line($source);
304 my $info = $self->{wiki}->get_plugin_info($plugin->{command});
305 if($info->{TYPE} eq "inline"){
306 push @parsed, $self->plugin($plugin);
308 push @parsed, $self->parse_line("<<".$plugin->{command}."¥×¥é¥°¥¤¥ó¤Ï¸ºß¤·¤Þ¤»¤ó¡£>>");
311 $source = $plugin->{post};
317 elsif ($self->{interwiki}->exists_interwiki($source)) {
318 my $label = $self->{interwiki}->{g_label};
319 my $url = $self->{interwiki}->{g_url};
320 $source = $self->{interwiki}->{g_post};
321 push @parsed, $self->url_anchor($url, $label);
325 elsif ($source =~ /^\[\[([^\[]+?)\|([^\|\[]+?)\]\]/) {
329 push @parsed, $self->wiki_anchor($page, $label);
334 =~ /^\[([^\[]+?)\|((?:http|https|ftp|mailto):[a-zA-Z0-9\.,%~^_+\-%\/\?\(\)!&=:;\*#\@'\$]*)\]/
335 || $source =~ /^\[([^\[]+?)\|(file:[^\[\]]*)\]/
337 =~ /^\[([^\[]+?)\|((?:\/|\.\/|\.\.\/)+[a-zA-Z0-9\.,%~^_+\-%\/\?\(\)!&=:;\*#\@'\$]*)\]/
343 if ( index($url, q{"}) >= 0
344 || index($url, '><') >= 0
345 || index($url, 'javascript:') >= 0)
347 push @parsed, $self->parse_line('<<ÉÔÀµ¤Ê¥ê¥ó¥¯¤Ç¤¹¡£>>');
350 push @parsed, $self->url_anchor($url, $label);
356 =~ /^(?:https?|ftp|mailto):[a-zA-Z0-9\.,%~^_+\-%\/\?\(\)!&=:;\*#\@'\$]*/
357 || $source =~ /^file:[^\[\]]*/)
361 if ( index($url, q{"}) >= 0
362 || index($url, '><') >= 0
363 || index($url, 'javascript:') >= 0)
365 push @parsed, $self->parse_line('<<ÉÔÀµ¤Ê¥ê¥ó¥¯¤Ç¤¹¡£>>');
368 push @parsed, $self->url_anchor($url);
373 elsif ($source =~ /^\[\[([^\|]+?)\]\]/) {
376 push @parsed, $self->wiki_anchor($page);
380 elsif ($source =~ /^\[([^\[]+?)\|(.+?)\]/) {
384 if ( index($url, q{"}) >= 0
385 || index($url, '><') >= 0
386 || index($url, 'javascript:') >= 0)
388 push @parsed, $self->parse_line('<<ÉÔÀµ¤Ê¥ê¥ó¥¯¤Ç¤¹¡£>>');
393 my $wiki = $self->{wiki};
394 my $uri = $wiki->config('server_host');
396 $uri = $wiki->get_CGI()->url(-path_info => 1);
401 . $wiki->get_CGI->url(-absolute => 1)
402 . $wiki->get_CGI()->path_info();
404 push @parsed, $self->url_anchor($uri . '/../' . $url, $label);
408 # ¥Ü¡¼¥ë¥É¡¢¥¤¥¿¥ê¥Ã¥¯¡¢¼è¤ê¾Ã¤·Àþ¡¢²¼Àþ
409 elsif ($source =~ /^('''?|==|__)(.+?)\1/) {
413 if ($type eq q{'''}) {
414 push @parsed, $self->bold($label);
416 elsif ($type eq q{__}) {
417 push @parsed, $self->underline($label);
419 elsif ($type eq q{''}) {
420 push @parsed, $self->italic($label);
422 else { ## elsif ($type eq q{==}) {
423 push @parsed, $self->denialline($label);
428 elsif ($source =~ /^<<(.+?)>>/) {
431 push @parsed, $self->error($label);
434 # ¥¤¥ó¥é¥¤¥ó Wiki ½ñ¼°Á´ÂÎ¤Ë¤Ï macth ¤·¤Ê¤«¤Ã¤¿¤È¤
437 if ($source =~ /^(.)/) {
442 # parse ·ë²Ì¤ò @array ¤ËÊݸ¤¹¤ë½èÍý¤òÈô¤Ð¤·¤Æ·«¤êÊÖ¤·¡£
446 # ¥¤¥ó¥é¥¤¥ó Wiki ½ñ¼°Á´ÂÎ¤Ë macth ¤·¤¿¸å¤Î
447 # parse ·ë²Ì¤ò @array ¤ËÊݸ¤¹¤ë½èÍý¡£
449 # ¤â¤· $pre ¤¬Î¯¤Þ¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢¥¡¼¥ï¡¼¥É¤Î½èÍý¤ò¼Â»Ü¡£
451 push @array, $self->_parse_line_keyword($pre);
455 push @array, @parsed;
458 # ¤â¤· $pre ¤¬Î¯¤Þ¤Ã¤Æ¤¤¤ë¤Ê¤é¡¢¥¡¼¥ï¡¼¥É¤Î½èÍý¤ò¼Â»Ü¡£
460 push @array, $self->_parse_line_keyword($pre);
466 #========================================================================
468 # parse_line() ¤«¤é¸Æ¤Ó½Ð¤µ¤ì¡¢¥¡¼¥ï¡¼¥É¤Î¸¡º÷¡¦ÃÖ´¹½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£
470 #========================================================================
471 sub _parse_line_keyword {
475 return () if (not defined $source);
479 # $source ¤¬¶õ¤Ë¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤¹¡£
480 while ($source ne q{}) {
483 if ($self->{keyword}->exists_keyword($source)) {
484 my $pre = $self->{keyword}->{g_pre};
485 my $label = $self->{keyword}->{g_label};
486 my $url = $self->{keyword}->{g_url};
487 my $page = $self->{keyword}->{g_page};
488 $source = $self->{keyword}->{g_post};
490 push @array, $self->_parse_line_keyword($pre);
492 if (defined($url) && $url ne q{}) {
493 push @array, $self->url_anchor($url, $label);
495 push @array, $self->wiki_anchor($page, $label);
501 elsif ($self->{wiki}->config('wikiname') == 1 && $source =~ /[A-Z]+?[a-z]+?(?:[A-Z]+?[a-z]+)+/) {
506 push @array, $self->_parse_line_keyword($pre);
508 push @array, $self->wiki_anchor($page);
511 # ¥¡¼¥ï¡¼¥É¤â WikiName ¤â¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤È¤
513 push @array, $self->text($source);
520 #===============================================================================
522 # ¥Ñ¡¼¥¹¤ò³«»ÏÁ°¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
523 # ¥µ¥Ö¥¯¥é¥¹¤ÇɬÍפʽèÍý¤¬¤¢¤ë¾ì¹ç¤Ï¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¯¤À¤µ¤¤¡£
525 #===============================================================================
528 #===============================================================================
530 # ¥Ñ¡¼¥¹½ªÎ»¸å¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
531 # ¥µ¥Ö¥¯¥é¥¹¤ÇɬÍפʽèÍý¤¬¤¢¤ë¾ì¹ç¤Ï¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¯¤À¤µ¤¤¡£
533 #===============================================================================
536 #===============================================================================
538 # URL¥¢¥ó¥«¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
539 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
541 #===============================================================================
544 #===============================================================================
546 # ¥Ú¡¼¥¸Ì¾¥¢¥ó¥«¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
547 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
549 #===============================================================================
552 #===============================================================================
554 # ¥¤¥¿¥ê¥Ã¥¯¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
555 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
557 #===============================================================================
560 #===============================================================================
562 # ¥Ü¡¼¥ë¥É¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
563 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
565 #===============================================================================
568 #===============================================================================
570 # ²¼Àþ¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
571 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
573 #===============================================================================
576 #===============================================================================
578 # ÂǤÁ¾Ã¤·Àþ¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
579 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
581 #===============================================================================
584 #===============================================================================
586 # ¥×¥é¥°¥¤¥ó¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
587 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
589 #===============================================================================
592 #===============================================================================
594 # ¥Æ¥¥¹¥È¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
595 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
597 #===============================================================================
600 #===============================================================================
602 # ¹àÌܤ˥ޥåÁ¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
603 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
605 #===============================================================================
608 #===============================================================================
610 # ÈÖ¹æÉÕ¤¹àÌܤ˥ޥåÁ¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
611 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
613 #===============================================================================
616 #===============================================================================
618 # ¸«½Ð¤·¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
619 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
621 #===============================================================================
624 #===============================================================================
626 # PRE¥¿¥°¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
627 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
629 #===============================================================================
632 #===============================================================================
634 # ¿åÊ¿Àþ¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
635 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
637 #===============================================================================
640 #===============================================================================
642 # Æäˤʤˤâ¤Ê¤¤¹Ô¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
643 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
645 #===============================================================================
648 #===============================================================================
650 # ÀâÌÀ¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
651 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
653 #===============================================================================
656 #===============================================================================
658 # °úÍѤ˥ޥåÁ¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
659 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
661 #===============================================================================
664 #===============================================================================
666 # ¥Ñ¥é¥°¥é¥Õ¤Î¶èÀÚ¤ê¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
667 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
669 #===============================================================================
672 #===============================================================================
674 # ¥Æ¡¼¥Ö¥ë¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
675 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
677 #===============================================================================
680 #===============================================================================
682 # ¥Ñ¥é¥°¥é¥Õ¥×¥é¥°¥¤¥ó¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
683 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
685 #===============================================================================
688 #===============================================================================
690 # ²èÁü¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
691 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
693 #===============================================================================
696 #===============================================================================
698 # ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Ë¥Þ¥Ã¥Á¤·¤¿¾ì¹ç¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
699 # ¥µ¥Ö¥¯¥é¥¹¤Ë¤Æ½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
701 #===============================================================================