package GridFiller::Types; use strict; use warnings; use namespace::autoclean; use MooseX::Types -declare => [qw( GridT GridStatusT CharT LetterCellT TextResultT WordListT FontDescrT FontOptT )]; use MooseX::Types::Moose qw(Str ArrayRef Int); use MooseX::Types::Structured qw(Tuple); subtype CharT, as Str, where { length($_) == 1 }; subtype LetterCellT, as Tuple[Int,CharT]; subtype GridT, as ArrayRef[ArrayRef[Str]]; subtype GridStatusT, as ArrayRef[ArrayRef[Int]]; subtype WordListT, as ArrayRef[Str]; subtype TextResultT, as ArrayRef[ArrayRef[LetterCellT]]; class_type FontDescrT, { class => 'Pango::FontDescription' }; coerce FontDescrT, from Str, via { require Pango; Pango::FontDescription->from_string($_); }; class_type FontOptT, { class => 'Cairo::FontOptions' }; 1;