package NewsExtractor::Article; use Moo; use NewsExtractor::Types qw< Text Text1K >; has headline => ( required => 1, is => 'ro', isa => Text1K ); has article_body => ( required => 1, is => 'ro', isa => Text ); has dateline => ( predicate => 1, is => 'ro', isa => Text1K ); has journalist => ( predicate => 1, is => 'ro', isa => Text1K ); sub TO_JSON { my ($self) = @_; return { headline => $self->headline, article_body => $self->article_body, dateline => $self->dateline, journalist => $self->journalist, } } 1; __END__ =head1 Name NewsExtractor::Article - A data class for containing news article. =head1 Description This is a data class that contains an news article extracted from some web sites. The instances of this data class has these attributes: =over 4 =item headline Mandatory. Str. Refer to the headline of a news article. =item article_body Mandatory. Str. Refer to the body of a news article. =item dateline Optional. One must check the presense of this attribute with C<has_dateline> method before taking the value of it. =item journalist Optional. One must check the presense of this attribute with C<has_journalist> method before taking the value of it. =back =cut