/[pub]/suikawiki/script/misc/plugins/link/map.wp2
Suika

Diff of /suikawiki/script/misc/plugins/link/map.wp2

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by wakaba, Sun Feb 1 12:09:44 2004 UTC revision 1.2 by wakaba, Sun Feb 8 08:46:47 2004 UTC
# Line 13  Plugin: Line 13  Plugin:
13        @@@lang:ja        @@@lang:ja
14        @@@script:Latn        @@@script:Latn
15      @@Mail[list]: w@suika.fam.cx      @@Mail[list]: w@suika.fam.cx
16    @Date.RCS: $Date$    @Date.RCS:
17         $Date$
18    @RequiredPlugin[list]:    @RequiredPlugin[list]:
19      WikiLinking      WikiLinking
20    @Use:    @Use:
# Line 64  FormattingRule: Line 65  FormattingRule:
65      __ATTRTEXT:%ns__;__ATTRTEXT:%recursive__;      __ATTRTEXT:%ns__;__ATTRTEXT:%recursive__;
66      __ATTRTEXT:%n__;      __ATTRTEXT:%n__;
67      $p->{recursive} = 1 unless length $p->{recursive};      $p->{recursive} = 1 unless length $p->{recursive};
68      $p->{ns} .= '//' if $p->{ns} and not substr ($p->{ns}, -2) eq '//';      my $ns = $o->{wiki}->name ($p->{ns});
69        #$ns->append_component ('') unless $ns->[$#$ns] eq '';
70      my $i = 0;      my $i = 0;
71      $p->{n} ||= 10;      $p->{n} ||= 10;
72      __ATTRTEXT:%template__;      __ATTRTEXT:%template__;
# Line 76  FormattingRule: Line 78  FormattingRule:
78           map  { try { [$_, $o->{wiki}->{db}->get (lastmodified => $_)] }           map  { try { [$_, $o->{wiki}->{db}->get (lastmodified => $_)] }
79                  catch SuikaWiki::DB::Util::Error with {[$_, undef]} }                  catch SuikaWiki::DB::Util::Error with {[$_, undef]} }
80           $o->{wiki}->{db}->keys ('content',           $o->{wiki}->{db}->keys ('content',
81                                   -ns => [split m#//#, $p->{ns}],                                   -ns => $ns,
82                                   -type => 'key',                                   -type => 'key',
83                                   -recursive => $p->{recursive})) {                                   -recursive => $p->{recursive})) {
84        next unless $_->[0];        next unless $_->[0];
# Line 89  FormattingRule: Line 91  FormattingRule:
91        $WIKILINKING->to_wikipage_in_html ({        $WIKILINKING->to_wikipage_in_html ({
92          label => $p->{template},          label => $p->{template},
93        } => {        } => {
94  #        base => $o->{page},          base => $o->{wiki}->{var}->{page},
95          page_name_relative => $_->[0],          page_name_relative => $o->{wiki}->name ($_->[0]),
96          wiki_mode => $p->{mode},          wiki_mode => $p->{mode},
97          _with_lm => 1,          _with_lm => 1,
98          page_lastmodified => $_->[1],          page_lastmodified => $_->[1],
# Line 126  FormattingRule: Line 128  FormattingRule:
128      __ATTRTEXT:%ns__;__ATTRTEXT:%recursive__;      __ATTRTEXT:%ns__;__ATTRTEXT:%recursive__;
129      __ATTRTEXT:%n__;      __ATTRTEXT:%n__;
130      $p->{recursive} = 1 unless length $p->{recursive};      $p->{recursive} = 1 unless length $p->{recursive};
131      $p->{ns} .= '//' if $p->{ns} and not substr ($p->{ns}, -2) eq '//';      my $ns = $o->{wiki}->name ($p->{ns});
132        #$ns->append_component ('') unless $ns->[$#$ns] eq '';
133      my $i = 0;      my $i = 0;
134      $p->{n} ||= -1;      $p->{n} ||= -1;
135      __ATTRTEXT:%template__;      __ATTRTEXT:%template__;
# Line 136  FormattingRule: Line 139  FormattingRule:
139      __ATTRTEXT:%mode__;      __ATTRTEXT:%mode__;
140      try {      try {
141        for (sort {$a->[1] cmp $b->[1]}        for (sort {$a->[1] cmp $b->[1]}
142             map {[$_, join '//', @{$_}]}             map {[$_, join '//', @{$_}]} # make sort key
143             $o->{wiki}->{db}->keys ('content',             $o->{wiki}->{db}->keys ('content',
144                                     -ns => [split m#//#, $p->{ns}],                                     -ns => $ns,
145                                     -type => 'key',                                     -type => 'key',
146                                     -recursive => $p->{recursive})) {                                     -recursive => $p->{recursive})) {
147          last if $i++ == $p->{n};          last if $i++ == $p->{n};
# Line 150  FormattingRule: Line 153  FormattingRule:
153          $WIKILINKING->to_wikipage_in_html ({          $WIKILINKING->to_wikipage_in_html ({
154            label => $p->{template},            label => $p->{template},
155          } => {          } => {
156  #          base => $o->{page},            base => $o->{wiki}->{var}->{page},
157            page_name_relative => $_->[0],            page_name_relative => $o->{wiki}->name ($_->[0]),
158            wiki_mode => $p->{mode},            wiki_mode => $p->{mode},
159          }, {          }, {
160            o => $o,            o => $o,
# Line 171  FormattingRule: Line 174  FormattingRule:
174    @Name: search-result    @Name: search-result
175    @Formatting:    @Formatting:
176      __ATTRTEXT:%key__;      __ATTRTEXT:%key__;
177      $p->{key} ||= join '//', @{$o->{wiki}->{var}->{page}};      $p->{key} ||= $o->{wiki}->{var}->{page}->stringify (wiki => $o->{wiki});
178      __ATTRTEXT:%case_sensible__;      __ATTRTEXT:%case_sensible__;
179      my $word = $p->{case_sensible} ? $p->{key} : lc $p->{key};      my $word = $p->{case_sensible} ? $p->{key} : lc $p->{key};
180      my @r;      my @r;
# Line 186  FormattingRule: Line 189  FormattingRule:
189          };          };
190          $content = $p->{case_sensible} ? $content : lc $content;          $content = $p->{case_sensible} ? $content : lc $content;
191          $content =~ s/^[^\x0A\x0D]+[\x0D\x0A]+//s;          $content =~ s/^[^\x0A\x0D]+[\x0D\x0A]+//s;
192          my $n_page = $p->{case_sensible} ? join '//', @$page          $page = $o->{wiki}->name ($page);
193                                           : lc join '//', @$page;          my $n_page = $page->stringify (wiki => $o->{wiki});
194            $n_page = lc $n_page unless $p->{case_sensible};
195          if (index ($n_page, $word) > -1) {          if (index ($n_page, $word) > -1) {
196                 my $c = $content =~ s/\Q$word\E//g;                 my $c = $content =~ s/\Q$word\E//g;
197                  push @r, [$page, $c+20];                  push @r, [$page, $c+20];
# Line 199  FormattingRule: Line 203  FormattingRule:
203                }                }
204        }        }
205        @r = sort {$b->[1] <=> $a->[1] || $a->[0] cmp $b->[0]} @r;        @r = sort {$b->[1] <=> $a->[1] || $a->[0] cmp $b->[0]} @r;
206        $sr = join "\x1E", map {join ("\x1D", @{$_->[0]})."\x1F".$_->[1]} @r;        $sr = join "\x1E",
207                map {$_->[0]->stringify (wiki => $o->{wiki}, delimiter => "\x1D")
208                     ."\x1F".$_->[1]} @r;
209        $o->{wiki}->{db}->set (m__search_result => [$word] => $sr);        $o->{wiki}->{db}->set (m__search_result => [$word] => $sr);
210  ## TODO: Cache & case-sensibility  ## TODO: Cache & case-sensibility
211      } else {      } else {
212        @r = map {[[split /\x1D/, $_->[0]], $_->[1]]}        @r = map {[$o->{wiki}->name ($_->[0], delimiter_reg => qr/\x1D/), $_->[1]]}
213             map {[split /\x1F/, $_, 2]} split /\x1E/, $sr;             map {[split /\x1F/, $_, 2]} split /\x1E/, $sr;
214      }      }
       #my $em = $p->{em} ? sub { my $s = shift; $s =~ s#(\Q$word\E)#<em>$1</em>#gi; $s } : sub {$_[0]};  
         
215        return unless @r;        return unless @r;
216        my $list = $p->{-parent}->append_new_node        my $list = $p->{-parent}->append_new_node
217                                  (type => '#element',                                  (type => '#element',
# Line 225  FormattingRule: Line 229  FormattingRule:
229          $WIKILINKING->to_wikipage_in_html ({          $WIKILINKING->to_wikipage_in_html ({
230            label => $p->{template},            label => $p->{template},
231          } => {          } => {
232  #          base => $o->{page},            base => $o->{wiki}->{var}->{page},
233            page_name_relative => $_->[0],            page_name_relative => $_->[0],
234            wiki_mode => $p->{mode},            wiki_mode => $p->{mode},
235          }, {          }, {

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24