<?xml version="1.0" encoding="windows-1252"?>
<node id="999894" title="Re: finding ancestor elements related to specific change" created="2012-10-19 05:48:20" updated="2012-10-19 05:48:20">
<type id="11">
note</type>
<author id="105128">
Jenda</author>
<data>
<field name="doctext">
&lt;p&gt;Do you mean something like this?&lt;/p&gt;

&lt;code&gt;
#!/usr/bin/perl -slw
use strict;
use Data::Dump qw(dump pp);
use XML::Rules;

my $parser = XML::Rules-&gt;new(
	rules =&gt; {
		parameters =&gt; sub {
			return '+has_uint64' =&gt; ($_[1]-&gt;{type} eq 'uint64_t');
		},
		members =&gt; sub {
			my ($tag,$attr,$context,$parents) = @_;
			return unless $context-&gt;[-2] eq 'classes';
			my $class = $parents-&gt;[-2]{name};
			(my $access = $context-&gt;[-1]) =~ s/_methods//;
			print "$access $class.$attr-&gt;{name} has $attr-&gt;{has_uint64} uint64 parameter(s)\n"
				if ($attr-&gt;{has_uint64});
			return;
		},
		'^enums' =&gt; 'skip',
	}
);

$parser-&gt;parse(\*DATA);

__DATA__
&lt;classes name="Panoply::BAR"&gt;
    &lt;public_methods&gt;
...
&lt;/code&gt;

&lt;!-- Node text goes above. Div tags should contain sig only --&gt;
&lt;div class="pmsig"&gt;&lt;div class="pmsig-105128"&gt;
&lt;p&gt;Jenda&lt;br&gt;
&lt;b&gt;Enoch was right!&lt;/b&gt;&lt;br/&gt;
Enjoy the last years of Rome.
&lt;/p&gt;

&lt;/div&gt;&lt;/div&gt;</field>
<field name="root_node">
999574</field>
<field name="parent_node">
999574</field>
</data>
</node>
