package Iotta::Copp::Collect; use strict; require Iotta::Elem; our @ISA = ("Iotta::Elem"); my $ws = "[ \t\n]"; sub run { my $self = shift; my $meta = shift; my $data = shift; if ($$meta{input} eq $self -> module) { $self->meta ($meta); } push @{$self->idlist}, @{$$meta{idlist}}; push @{$self->objs}, @{$$meta{objs}}; push @{$self->meths}, @{$$meta{meths}}; } sub finish { my $self = shift; my $meta = $self->meta; $$meta{idlist} = $self->idlist; $$meta{objs} = $self->objs; $$meta{meths} = $self->meths; for (@{$self->idlist}) { print "ID: $_\n"; } for (@{$self->objs}) { print "OBJ: $$_{name} ($$_{flav})\n"; for (@{$$_{attrs}}) { print "ATTR: $_\n"; } } #for (@{$self->meths}) { #print "METH: $$_{object}: $$_{name}\n"; #for (@{$$_{args}}) { #print "ARG: $_\n"; #} #} $self->next->run ($meta, "") if ($self->next); } sub setup { my $self = shift; my $o = shift; $self -> module ($$o{module}); } sub initialize { my $self = shift; $self->SUPER::initialize (@_); $self->{idlist} = []; $self->{objs} = []; $self->{meths} = []; $self->{module} = ""; $self->{meta} = 0; } 1;