package xm::grabitemxtra;
use strict;
use xm::o;
"
try to look for text outside a (global) ITEM[A-Z]* section
and then mark these text areas as ITEMXTRA.
"}
my $in = shift;
while ($in =~
s{<(ITEM[\w:]*(?:\s[^<>]*)?(?=>))
((?:.(?!</?ITEM))*.)
<(ITEM[\w:]*(?:\s[^<>]*)?(?=>))
((?:.(?!</?ITEM))*.)
</(ITEM[\w:]*(?:\s[^<>]*)?(?=>))
}
{ "<".$1.$2."<___".$3.$4."</___".$5 }gsex
) {};
my $fu = sub {
my $x = $_[0];
return "<ITEMXTRA>".$x."</ITEMXTRA>" if $x !~ /^\s*$/s;
return $x;
};
$in =~ s{(^|</ITEM[\w:]*(?:\s[^<>]*)?>)
((?:.(?!</?ITEM))*.)
(<ITEM[\w:]*(?:\s[^<>]*)?(?=>))
}
{
$1.&$fu($2).$3
}gsex;
$in =~ s{(</?)___ITEM} {$1."ITEM"}gsex;
return $in;
}
return xm::o::args_stdin(@_, DESC); }
return DO(xm::o::args_stdin(@_, DESC)); }
1;