=head1 VERSION
-Version 0.01
+Version 0.02
=cut
-our $VERSION = '0.01';
+our $VERSION = '0.02';
+
+=head1 DESCRIPTION
+
+This role should be consumed by all the modifier classes.
+
+=cut
use Any::Moose 'Role';
use Any::Moose 'Util::TypeConstraints';
+=head1 METHODS
+
+These methods are required by the interface :
+
+=over 4
+
+=item *
+
+C<tag>
+
+Returns an identifier for the mod object.
+It is used to gather mods together when calling C<covers> on them.
+
+=item *
+
+C<covers $mod>
+
+Returns true if and only if the effects of the mod C<$mod> are already ensured by the current mod object, in which case no actual TikZ code will be emitted for C<$mod>.
+Both mod objects are guaranteed to have the same C<tag>.
+
+=item *
+
+C<declare $formatter>
+
+Returns an array reference of TikZ code lines required to declare this mod before using it, formatted by the L<LaTeX::TikZ::Formatter> object C<$formatter> ; or C<undef> if no declarations are needed for this mod.
+
+=item *
+
+C<apply $formatter>
+
+Returns the TikZ code that activates the current mod as a string formatted by the L<LaTeX::TikZ::Formatter> object C<$formatter>.
+
+=back
+
+=cut
+
requires qw(
tag
- cover
+ covers
declare
apply
);
coerce 'LaTeX::TikZ::Mod'
=> from 'Str'
- => via { LaTeX::TikZ::Mod::Raw->new($_) };
+ => via { LaTeX::TikZ::Mod::Raw->new(content => $_) };
+
+=head1 SEE ALSO
+
+L<LaTeX::TikZ>.
=head1 AUTHOR