/[pub]/suikawiki/script/bin/mkplugin2.pl
Suika

Diff of /suikawiki/script/bin/mkplugin2.pl

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

revision 1.18 by wakaba, Thu Jun 3 06:38:48 2004 UTC revision 1.20 by wakaba, Tue Sep 21 03:18:21 2004 UTC
# Line 59  sub code ($$) { Line 59  sub code ($$) {
59      $code =~ s/\$$_\b/$Info->{const}->{$_}/ge;      $code =~ s/\$$_\b/$Info->{const}->{$_}/ge;
60    }    }
61    $code =~ s/__FUNCPACK__/$Info->{module_name}/g;    $code =~ s/__FUNCPACK__/$Info->{module_name}/g;
62      $code =~ s/__FUNCPACK{([^{}]+)}__/(\$SuikaWiki::Plugin::Registry::Info{@{[literal $1]}}->{module_name} || SuikaWiki::Plugin->module_package (@{[literal $1]}))/g;
63    $code =~ s{<Q:([^:]+):([^>]+)>}{    $code =~ s{<Q:([^:]+):([^>]+)>}{
64      if ($Info->{Namespace}->{$1}) {      if ($Info->{Namespace}->{$1}) {
65        literal $Info->{Namespace}->{$1}.$2;        literal $Info->{Namespace}->{$1}.$2;
# Line 116  sub literal_or_code ($$) { Line 117  sub literal_or_code ($$) {
117    substr ($s, 0, 1) ne '{' ? literal ($s)    substr ($s, 0, 1) ne '{' ? literal ($s)
118                             : code ($Info, substr ($s, 1, length ($s) - 2));                             : code ($Info, substr ($s, 1, length ($s) - 2));
119  }  }
120    sub expanded_uri ($$$) {
121      my ($Info, $prefix, $lname) = @_;
122      warn "$0: $prefix: Namespace prefix not declared"
123        unless $Info->{Namespace}->{$prefix};
124      $Info->{Namespace}->{$prefix} . $lname;
125    }
126    
127  my $parser = Message::Markup::SuikaWikiConfig20::Parser->new;  my $parser = Message::Markup::SuikaWikiConfig20::Parser->new;
128  my $plugins = $parser->parse_text ($src);  my $plugins = $parser->parse_text ($src);
# Line 282  EOH Line 289  EOH
289        $r .= code $Info, $_->get_attribute_value ('Main');        $r .= code $Info, $_->get_attribute_value ('Main');
290        $r .= line $Info, reset => 1;        $r .= line $Info, reset => 1;
291        $r .= qq(}\n);        $r .= qq(}\n);
292      } elsif ({qw/content_written 1 content_removed 1 content_type_changed_from 1/}      } elsif ({qw/content_written 1 content_removed 1 content_type_changed_from 1
293                     content_prop_modified 1/}
294               ->{my $node_name = $_->local_name}) {               ->{my $node_name = $_->local_name}) {
295        $r .= q(sub ).$node_name        $r .= q(sub ).$node_name
296           .  q( {)."\n".q(my ($self, %opt) = @_;)           .  q( {)."\n".q(my ($self, %opt) = @_;)
# Line 293  EOH Line 301  EOH
301      } elsif ($_->local_name eq 'Use') {      } elsif ($_->local_name eq 'Use') {
302        $r .= line $Info, node_path => qq(Format[module-name()=$module_name]/Use);        $r .= line $Info, node_path => qq(Format[module-name()=$module_name]/Use);
303        $r .= code $Info, $_->inner_text;        $r .= code $Info, $_->inner_text;
304        } elsif ($_->local_name eq 'Prop') {
305          $r .= q<sub prop ($$;%) { my ($self, $name, %opt) = @_;>;
306          my $f = 0;
307          for my $prop (@{$_->child_nodes}) {
308            if ($prop->local_name =~ /^([^:]+):([^:]+)$/) {
309              $r .= qq{if (\$name eq @{[literal expanded_uri $Info, $1, $2]}) { return @{[literal $prop->value]} } els};
310              $f = 1;
311            }
312          }
313          $r .= q<e {> if $f;
314          $r .= q{$self->SUPER::prop ($name, %opt);};
315          $r .= q<}> if $f;
316          $r .= qq<\n}\n>;
317      }      }
318    }    }
319    $r;    $r;

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.20

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24