1 package LaTeX::TikZ::Interface;
8 LaTeX::TikZ::Interface - LaTeX::TikZ public interface register and loader.
16 our $VERSION = '0.03';
24 LaTeX::Tikz::Interface->register($keyword => $code)
26 Registers C<$code> to be available with C<< Tikz->$keyword >>.
34 my ($name, $code) = splice @_, 0, 2;
36 unless (defined $name and $name =~ /^[a-z_][a-z0-9_]+$/i) {
38 Carp::confess('Invalid interface name');
41 if (do { no strict 'refs'; defined &{__PACKAGE__."::$name"} }) {
43 Carp::confess("'$name' is already defined in the interface");
46 unless (defined $code and ref $code eq 'CODE') {
48 Carp::confess('Invalid code reference');
51 Sub::Name::subname($name => $code);
55 *{__PACKAGE__.'::'.$name} = $code;
64 Load all the modules of the L<LaTeX::TikZ> official suite that register a keyword in the interface.
69 require LaTeX::TikZ::Formatter; # formatter
70 require LaTeX::TikZ::Functor; # functor
72 require LaTeX::TikZ::Set::Raw; # raw
74 require LaTeX::TikZ::Set::Union; # union, path
75 require LaTeX::TikZ::Set::Sequence; # seq
76 require LaTeX::TikZ::Set::Chain; # chain, join
78 require LaTeX::TikZ::Set::Point; # point
79 require LaTeX::TikZ::Set::Line; # line
80 require LaTeX::TikZ::Set::Polyline; # polyline, closed_polyline
81 require LaTeX::TikZ::Set::Rectangle; # rectangle
82 require LaTeX::TikZ::Set::Circle; # circle
83 require LaTeX::TikZ::Set::Arc; # arc
84 require LaTeX::TikZ::Set::Arrow; # arrow
86 require LaTeX::TikZ::Mod::Raw; # raw_mod
88 require LaTeX::TikZ::Mod::Clip; # clip
89 require LaTeX::TikZ::Mod::Layer; # layer
91 require LaTeX::TikZ::Mod::Scale; # scale
92 require LaTeX::TikZ::Mod::Width; # width
93 require LaTeX::TikZ::Mod::Color; # color
94 require LaTeX::TikZ::Mod::Fill; # fill
95 require LaTeX::TikZ::Mod::Pattern; # pattern
104 Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
106 You can contact me by mail or on C<irc.perl.org> (vincent).
110 Please report any bugs or feature requests to C<bug-latex-tikz at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=LaTeX-TikZ>.
111 I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
115 You can find documentation for this module with the perldoc command.
119 =head1 COPYRIGHT & LICENSE
121 Copyright 2010,2011,2012,2013,2014,2015 Vincent Pit, all rights reserved.
123 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
127 1; # End of LaTeX::TikZ::Interface