1 package System::Introspector::Report::Publish::MediaWiki::Page;
4 use aliased 'System::Introspector::Report::Publish::MediaWiki::Parser';
5 use aliased 'System::Introspector::Report::Publish::MediaWiki::Producer';
6 use aliased 'System::Introspector::Report::Updater';
8 has name => (is => 'ro', required => 1);
9 has timestamp => (is => 'ro', predicate => 'has_timestamp');
10 has content => (is => 'rwp', required => 1);
12 sub is_new { not $_[0]->has_timestamp }
14 my $_producer = Producer->new;
15 my $_parser = Parser->new;
16 my $_updater = Updater->new;
26 my ($self, $update_stream) = @_;
27 my $content_before = $self->content;
28 my $original_stream = $_parser->parse($content_before);
29 my $merged_stream = $_updater->merge($original_stream, $update_stream);
30 my $content_updated = $_producer->render($merged_stream);
31 if ($content_updated->$_trim eq $content_before->$_trim) {
34 $self->_set_content($content_updated);