package xm::test;
use strict;
use xm::o;

sub DESC {"
  just a test for the complex markup - and see if your regex machine
  is uptodate and correct.
"}

sub level_DO
{
    my $in = shift;
    my $level = shift;
    my $n; my $a; my $b; my $c;
    
#    print "<xx>",$in,"</xx>";
    $in =~ s{<(\w[^\s\>]*)(\s[^<>]*(?=>)|(?=>))
		 ((?:.(?!</?\1[\s\>]))*.)
		 (</\1>)}
    {
	($n,$a,$b,$c) = ($1,$2,$3,$4);
	print " " x $level, "<",$n," body=", length $b,$a,"\n";
	&level_DO (substr($b,1),$level+1);
	print " " x $level, $c,"\n"; 
	""
	}gsex; 
    return "\n<result>".$in."</result>\n";
}

sub DO
{
    my $x = shift;

    return &level_DO ($x,0);
}

sub ARGS { return    xm::o::args_stdin(@_, DESC); }
sub main { return DO(xm::o::args_stdin(@_, DESC)); }

1;