NAME
Data::Message::Board - Data object for Message board.
SYNOPSIS
use Data::Message::Board;
my $obj = Data::Message::Board->new(%params);
my $author = $obj->author;
my $comments_ar = $obj->comments;
my $date = $obj->date;
my $id = $obj->id;
my $message = $obj->message;
METHODS
new
my $obj = Data::Message::Board->new(%params);
Constructor.
author
Author object which is Data::Person instance.
It's required.
comments
Message board comments which are Data::Mesaage::Board::Comment instances.
Default value is [].
date
Date of comment which is DateTime instance.
It's required.
id
Id.
Default value is undef.
message
Main comment message. Max length of message is 4096 character.
It's required.
Returns instance of object.
author
my $author = $obj->author;
Get author instance.
Returns Data::Person instance.
comments
my $comments_ar = $obj->comments;
Get message board comments.
Returns reference to array with Data::Message::Board::Comment instances.
date
my $date = $obj->date;
Get datetime of comment.
Returns DateTime instance.
id
my $id = $obj->id;
Get comment id.
Returns natural number.
my $message = $obj->message;
Get comment message.
Returns string.
ERRORS
new():
From Mo::utils::check_array_object():
Parameter 'comments' must be a array.
Value: %s
Reference: %s
Comment isn't 'Data::Message::Board::Comment' object.
Value: %s
Reference: %s
From Mo::utils::check_isa():
Parameter 'author' must be a 'Data::Person' object.
Value: %s
Reference: %s
Parameter 'date' must be a 'DateTime' object.
Value: %s
Reference: %s
From Mo::utils::check_length():
Parameter 'message' has length greater than '4096'.
Value: %s
From Mo::utils::check_number_id():
Parameter 'id' must be a natural number.
Value: %s
From Mo::utils::check_required():
Parameter 'author' is required.
Parameter 'date' is required.
Parameter 'message' is required.
EXAMPLE
use strict;
use warnings;
use Data::Person;
use Data::Message::Board;
use Data::Message::Board::Comment;
use DateTime;
use Unicode::UTF8 qw(decode_utf8 encode_utf8);
my $dt = DateTime->now;
my $dt_comment1 = $dt->clone->add('minutes' => 5);
my $dt_comment2 = $dt_comment1->clone->add('seconds' => 34);
my $obj = Data::Message::Board->new(
'author' => Data::Person->new(
'email' => 'skim@cpan.org',
'name' => decode_utf8('Michal Josef Špaček'),
),
'comments' => [
Data::Message::Board::Comment->new(
'author' => Data::Person->new(
'email' => 'bar@example.com',
'name' => decode_utf8('St. John'),
),
'date' => $dt_comment1,
'id' => 7,
'message' => 'I am fine.',
),
Data::Message::Board::Comment->new(
'author' => Data::Person->new(
'email' => 'foo@example.com',
'name' => decode_utf8('John Wick'),
),
'date' => $dt_comment2,
'id' => 6,
'message' => 'Not bad.',
),
],
'date' => $dt,
'id' => 1,
'message' => 'How are you?',
);
# Print out.
print 'Author name: '.encode_utf8($obj->author->name)."\n";
print 'Author email: '.$obj->author->email."\n";
print 'Date: '.$obj->date."\n";
print 'Id: '.$obj->id."\n";
print 'Message: '.$obj->message."\n";
print "Comments:\n";
map {
print "\tAuthor name: ".$_->author->name."\n";
print "\tDate: ".$_->date."\n";
print "\tId: ".$_->id."\n";
print "\tComment: ".$_->message."\n\n";
} @{$obj->comments};
# Output:
# Author name: Michal Josef Špaček
# Author email: skim@cpan.org
# Date: 2024-05-27T18:10:55
# Id: 1
# Message: How are you?
# Comments:
# Author name: St. John
# Date: 2024-05-27T18:15:55
# Id: 7
# Comment: I am fine.
#
# Author name: John Wick
# Date: 2024-05-27T18:16:29
# Id: 6
# Comment: Not bad.
#
DEPENDENCIES
REPOSITORY
https://github.com/michal-josef-spacek/Data-Message-Board
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2024 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.01