our $VERSION = '0.01';
+use LaTeX::TikZ::Interface;
+
use Any::Moose;
+=head1 RELATIONSHIPS
+
+This class consumes the L<LaTeX::TikZ::Mod> role, and as such implements the L</tag>, L</cover>, L</declare> and L</apply> methods.
+
+=cut
+
with 'LaTeX::TikZ::Mod';
+=head1 ATTRIBUTES
+
+=head2 C<template>
+
+=cut
+
has 'template' => (
is => 'ro',
isa => 'ArrayRef[Str]',
default => sub { +{ } },
);
+=head1 METHODS
+
+=head2 C<name>
+
+=cut
+
sub name {
my ($pat, $tikz) = @_;
width => sub { sprintf '%0.1fpt', $_[1]->thickness($_[2]) },
);
+=head2 C<tag>
+
+=cut
+
sub tag { ref $_[0] }
+=head2 C<cover>
+
+=cut
+
sub cover { 1 }
+=head2 C<declare>
+
+=cut
+
sub declare {
my ($pat, $tikz) = @_;
return @$template;
}
-sub apply { 'fill', 'pattern=' . $_[0]->name($_[1]) }
+=head2 C<apply>
-use LaTeX::TikZ::Interface pattern => sub {
- my $class = shift;
+=cut
- my %args = @_;
- if (exists $args{class}) {
- $class = delete $args{class};
- $class = __PACKAGE__ . '::' . $class unless $class =~ /::/;
- (my $pm = $class) =~ s{::}{/}g;
- $pm .= '.pm';
- require $pm;
- }
+sub apply { 'fill', 'pattern=' . $_[0]->name($_[1]) }
- $class->new(%args);
-};
+LaTeX::TikZ::Interface->register(
+ pattern => sub {
+ my $class = shift;
+
+ my %args = @_;
+ if (exists $args{class}) {
+ $class = delete $args{class};
+ $class = __PACKAGE__ . '::' . $class unless $class =~ /::/;
+ (my $pm = $class) =~ s{::}{/}g;
+ $pm .= '.pm';
+ require $pm;
+ }
+
+ $class->new(%args);
+ },
+);
__PACKAGE__->meta->make_immutable;
+=head1 SEE ALSO
+
+L<LaTeX::TikZ>, L<LaTeX::TikZ::Mod>.
+
=head1 AUTHOR
Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.