Mercurial > pub > Yours
view lib/Yours/Parsers/PMDParser.pm @ 4:8001dc056331
fixed problems with sax parser
fixed handling of empty repos
added log autoflush
author | sergey |
---|---|
date | Wed, 23 Oct 2013 11:49:16 +0400 |
parents | ae61af01bfa5 |
children |
line wrap: on
line source
package Yours::Parsers::PMDParser; use strict; use IMPL::Const qw(:prop); use IMPL::declare { base => [ 'Yours::Parsers::SaxParser' => '@_' ], props => [ onpackage => PROP_RW ] }; sub CTOR { my ($this,$handler) = @_; $this->onpackage($handler); } sub ProcessRootNode { my ($this,$node) = @_; $this->ReadChildren(sub { my ($me,$reader) = @_; return unless $reader->localName eq 'package'; my $type = $me->attribute('type'); my $package = $me->ReadComplexNode({ name => 'ReadTextNode', arch => 'ReadTextNode', location => sub { shift->attribute('href') }, checksum => sub { my ($me) = @_; return { type => $me->attribute('type'), value => $me->ReadTextNode() }; }, size => sub { shift->attribute('package') } }); $package->{type} = $type; $me->onpackage->($package) if $me->onpackage; }); } 1;