Mercurial > pub > Yours
view lib/Yours/Parsers/DIMDParser.pm @ 5:45a84be3ebb1 default tip
added deltainfo (.drpm) packages support
author | sergey |
---|---|
date | Wed, 23 Oct 2013 16:24:52 +0400 |
parents | |
children |
line wrap: on
line source
package Yours::Parsers::DIMDParser; 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->ReadComplexContent({ newpackage => 'ProcessPackageRecord' }); } sub ProcessPackageRecord { my ($this,$node) = @_; my $name = $this->attribute('name'); my $arch = $this->attribute('arch'); my $deltas = $this->ReadComplexContent({ delta => [{ 'location:filename' => 'ReadTextNode', size => 'ReadTextNode', checksumm => sub { my $me = shift; return { type => $me->attribute('type'), value => 'ReadTextNode' } } }] })->{delta}; if (my $handler = $this->onpackage) { foreach my $delta ( @{$deltas || []} ) { $delta->{name} = $name; $delta->{arch} = $arch; $handler->($delta); } } return; } 1;