Changeset 24144

Show
Ignore:
Timestamp:
12/03/08 04:37:51 (6 hours ago)
Author:
putter
Message:

[elfish/rx_on_re] Additional prep for changing emitter output.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • misc/elfish/rx_on_re/emit5.pm

    r24142 r24144  
    554554 
    555555  sub RMARE_aregex_create { 
    556     my($o,$f)=@_; 
    557     my $nparenx = $o->{flags}{p5} ? $o->{nparen} : $o->{nparen6}; 
     556    my($o,$f,$nparenx)=@_; 
    558557    $nparenx = 0 if !defined $nparenx; #XXX arguments to subrules.  aregex not seeing an init. 
    559558    subname "<aregex ".($sub_id++).">" => sub { 
     
    575574 
    576575  sub RMARE_do_match { 
    577     my($o,$f,$s,$beginat,$minlen)=@_; 
    578     my $nparen = $o->{nparen}; 
     576    my($o,$f,$s,$beginat,$minlen,$nparen)=@_; 
    579577    my $len = length($s); 
    580578    $beginat = 0 if !defined($beginat); 
     
    842840 
    843841  sub RMARE_aregex { 
    844     my($o,$pkg,$name,$f)=@_; 
     842    my($o,$pkg,$name,$f,$nparen)=@_; 
    845843    # Why the extra sub?  60+% shorter re_text runtime.  sigh. 
    846844    my $matchergen = subname "even with subname used?" => sub { 
     
    848846        my($pkg9,$name1,$s,$beginat,$minlen)=@_; 
    849847        local $Regexp::ModuleA::ReentrantEngine::Env::pkg = $pkg9; 
    850         my $m = $o->RMARE_do_match($f,$s,$beginat,$minlen); 
     848        my $m = $o->RMARE_do_match($f,$s,$beginat,$minlen,$nparen); 
    851849        $m->_match_enable_overload2; 
    852850        $$m->{RULE} = $name1; 
     
    14171415      my $pkg = self.<pkg>; #if self.<pkg> {'"'~quotemeta(self.<pkg>)~'"'} else {'undef'}; 
    14181416      my $name = self.<name>; #if self.<name> {'"'~quotemeta(self.<name>)~'"'} else {'undef'}; 
    1419       #XXX TODO: RMARE_aregex_create is accessing the node.  Refactor. 
    1420       my $f = $.RMARE_aregex_create(self.<expr>.RMARE_emit2); 
    1421       $.RMARE_aregex($pkg,$name,$f); 
     1417      my $nparenx = {if self.<flags><p5> { self.<nparen> } else { self.<nparen6> }}; 
     1418      my $nparen = self.<nparen>; #||'undef'; 
     1419      my $expr = self.<expr>.RMARE_emit2; 
     1420      #$.RMARE_aregex($pkg,$name,$.RMARE_aregex_create($expr,$nparenx),$nparen); 
     1421      _inline_p5('IRx1::RxBaseClass->RMARE_aregex($pkg,$name,IRx1::RxBaseClass->RMARE_aregex_create($expr,$nparenx),$nparen)'); 
    14221422    } 
    14231423  } 
     
    14321432      my $name = self.<name>; #if self.<name> {'"'~quotemeta(self.<name>)~'"'} else {'undef'}; 
    14331433      my $fr = self.<expr>.RMARE_emit2; 
    1434       #XXX TODO 
    14351434      $.RMARE_biind($pkg,$name,$fr); 
     1435      #_inline_p5('IRx1::RxBaseClass->RMARE_biind($pkg,$name,$fr)') 
    14361436    } 
    14371437  } 
     
    14431443    } 
    14441444    method RMARE_emit2 { 
    1445       my $pkg = self.<pkg>; #if self.<pkg> {'"'~quotemeta(self.<pkg>)~'"'} else {'undef'}; 
    1446       #XXX TODO 
    1447       $.RMARE_namespace($pkg); 
    1448       self.<bindings>.map(sub($o){$o.RMARE_emit2}).flatten; 
     1445      my $pkg = self.<pkg>; 
     1446      #$.RMARE_namespace($pkg); 
     1447      eval_perl5('IRx1::RxBaseClass->RMARE_namespace("'~quotemeta($pkg)~'");'); #~ 
     1448      self.<bindings>.map(sub($o){$o.RMARE_emit2}).flatten; #join 
    14491449    } 
    14501450  }