NAME
Ordeal::Model::Backend::YAML - Cards/deck definition via YAML file
SYNOPSIS
use Ordeal::Model;
use Ordeal::Model::Backend::YAML;
# definition in "decks.yml", cards in "cards/*" inside base_directory
my $backend = Ordeal::Model::Backend::YAML->new(
base_directory => '/path/to/base'
);
my $model = Ordeal::Model->new(backend => $backend);
# get identifiers of all decks
my @decks = $backend->decks; # OR
@decks = $model->get_deck_ids;
my $deck = $backend->deck($deck_id); # OR
$deck = $model->get_deck($deck_id);
my $card = $backend->card($card_id); # OR
$card = $model->get_card($card_id);
my $card_path = $backend->path_for(card => $card_id);
my $ct = $backend->content_type_for('jpg');
DESCRIPTION
This module is a simple file-based backend for Ordeal::Model; cards are assumed to be files, while the definition of all decks is inside a YAML file.
It is based on a directory with the following structure:
*
+- cards *
| +- card1.jpg
| +- card2.jpg
| ...
|
+- decks.yml
Cards are PNG
, JPG
or SVG
files.
Decks are defined inside file decks.yml
, in YAML format, composed of an associative array whose keys are deck identifiers and the associated values are associative arrays themselves, each defining a deck with the following keys:
cards
-
(mandatory) list of card identifiers, i.e. file names referred to the
cards
sub-directory. description
-
(optional) description of the deck.
Example of a decks.yml
file:
deck1:
description: foo
cards:
- card1.jpg
- card2.jpg
deck2:
cards:
- card3.jpg
- card1.jpg
- card4.jpg
METHODS
This class inherits from Ordeal::Model::Backend::PlainFile so it has its methods.
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.