NAME
Ordeal::Model::Deck - Class for representing decks of cards
SYNOPSIS
use Ordeal::Model::Deck;
my $card = Ordeal::Model::Deck->new(
group => 'whatever',
id => 'AAA-bb-1235',
name => 'three of clubs',
cards => \@cards,
);
DESCRIPTION
This class represents a deck of cards. The representation is considered ordered, see Ordeal::Model::Shuffle for a wrapper object for shuffling the cards.
"id" should be a unique identifier for the deck. "cards" is the low-level accessor to the cards, although you shoud probably stick to the higher level interface provided by "card_at" and "n_cards".
"group" can be used to group decks together, e.g. for assigning them to owners. All in all it is opaque data that you can use.
"name" is a name you can associate to the deck. Again, it's treated as opaque data, so you can abuse it.
METHODS
card_at
my $card = $deck->card_at($i);
get the card in position $i
. Positions are assumed to start from 0 and arrive up to "n_cards" minus one. Invalid indexes $i
trigger an exception.
cards
my @cards = $deck->cards;
$deck->cards(@cards);
accessor for the list of cards. Note that it accepts and returns a list not an array reference.
group
my $group = $deck->group;
$deck->group($group);
accessor for some c<group> metadata you might want to associate to the deck. Treated as opaque data.
id
my $id = $deck->id;
$deck->id($id);
accessor for a unique identifer associated to the deck.
name
my $name = $deck->name;
$deck->name($name);
accessor for a name associated to the deck.
n_cards
my $n = $deck->n_cards;
returns the number of cards in the deck.
BUGS AND LIMITATIONS
The code leverages some experimental Perl features like signatures and postderef; for this reason, at least perl 5.20 will be needed.
Report bugs through GitHub (patches welcome) at https://github.com/polettix/Ordeal-Model.
AUTHOR
Flavio Poletti <polettix@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2018 by Flavio Poletti <polettix@cpan.org>
This module is free software. You can redistribute it and/or modify it under the terms of the Artistic License 2.0.
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.