[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: patch: improved TSLICE, thread navigation, ...
> Behaviorial-wise, I aggree with you on how TNEXT and TPREV should behave
> for TREVERSE.
Awesome! :)
> > may make things *faster* overall (particularly for LINKs). The extra
> > ...
>
> From a quick look at the code you sent, your cache attempt does not
> appear to work since you reset it each time replace_li_var() is called
> (losing what you cached). The cache structure must exist outside of
> replace_li_var(), and be reset when a new archive is opened. I could
> be wrong with this assessment since it is based on looking at the
> patch data itself.
My intention was a sort of local cache, that would last only across
*nested* calls to replace_li_var. That's why LINKs would be most improved;
if I understand it right, they expand to a bunch of related variables.
But you are right, my intentions failed. One fix is pretty simple: add
another argument to replace_li_var. A patch, which should be applied *on
top of my previous patches*, is attached.
Even better would be to replace calls like this:
($tmpl = $SUBJECTEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo;
with something like this:
$tmpl = &replace_li_vars($SUBJECTEND, $index);
where the &replace_li_vars() function would maintain the cache between
calls to &replace_li_var(). I will make this change in my local copy, and
will send it along if you'd like.
love,ed
*** /u/eddietwo/mhrcvars.pl Tue Jul 3 22:04:36 2001
--- MHonArc2.4.9-p/lib/mhrcvars.pl Tue Jul 3 21:56:57 2001
***************
*** 81,87 ****
## calling routine or as globals.
##
sub replace_li_var {
! my($val, $index) = ($_[0], $_[1]);
my($var,$len,$canclip,$raw,$isurl,$tmp,$ret) = ('',0,0,0,0,'','');
my($jstr) = (0);
my($expand) = (0);
--- 81,87 ----
## calling routine or as globals.
##
sub replace_li_var {
! my($val, $index, $poscache) = ($_[0], $_[1], $_[2]);
my($var,$len,$canclip,$raw,$isurl,$tmp,$ret) = ('',0,0,0,0,'','');
my($jstr) = (0);
my($expand) = (0);
***************
*** 90,97 ****
my($arg, $opt) = ("", "");
## Cache compute_msg_pos results
! my($poscache) = { };
! $poscache->{'$CURINDEX'} = $index;
## Get variable argument string
if ($val =~ s/\(([^()]*)\)//) {
--- 90,96 ----
my($arg, $opt) = ("", "");
## Cache compute_msg_pos results
! $poscache = { '$CURINDEX' => $index } if !defined($poscache);
## Get variable argument string
if ($val =~ s/\(([^()]*)\)//) {
***************
*** 576,582 ****
## Check if string needs to be expanded again
if ($expand) {
! $tmp =~ s/$VarExp/&replace_li_var($1,$index)/geo;
}
## Check if URL text specifier is set
--- 575,581 ----
## Check if string needs to be expanded again
if ($expand) {
! $tmp =~ s/$VarExp/&replace_li_var($1,$index,$poscache)/geo;
}
## Check if URL text specifier is set
[Index of Archives]
[Bugtraq]
[Yosemite News]
[Mhonarc Home]