]> git.vpit.fr Git - perl/modules/LaTeX-TikZ.git/blob - lib/LaTeX/TikZ/API.pm
Initial commit
[perl/modules/LaTeX-TikZ.git] / lib / LaTeX / TikZ / API.pm
1 package LaTeX::TikZ::API;
2
3 use strict;
4 use warnings;
5
6 =head1 NAME
7
8 LaTeX::TikZ::API - LaTeX::TikZ public API register and loader.
9
10 =head1 VERSION
11
12 Version 0.01
13
14 =cut
15
16 our $VERSION = '0.01';
17
18 use Sub::Name ();
19
20 sub import {
21  shift;
22
23  register(@_);
24 }
25
26 sub register {
27  while (@_ >= 2) {
28   my ($name, $code) = splice @_, 0, 2;
29
30   unless (defined $name and $name =~ /^[a-z_][a-z0-9_]+$/i) {
31    require Carp;
32    Carp::confess('Invalid interface name');
33   }
34
35   if (do { no strict 'refs'; defined &{__PACKAGE__."::$name"} }) {
36    require Carp;
37    Carp::confess("'$name' is already defined in the interface");
38   }
39
40   unless (defined $code and ref $code eq 'CODE') {
41    require Carp;
42    Carp::confess('Invalid code reference');
43   }
44
45   Sub::Name::subname($name => $code);
46
47   {
48    no strict 'refs';
49    *{__PACKAGE__.'::'.$name} = $code;
50   }
51  }
52
53  return;
54 }
55
56 sub load {
57  require LaTeX::TikZ::Set::Mod;
58
59  require LaTeX::TikZ::Set::Raw;       # raw
60
61  require LaTeX::TikZ::Set::Path;      # path
62  require LaTeX::TikZ::Set::Sequence;  # seq
63
64  require LaTeX::TikZ::Set::Point;     # point
65  require LaTeX::TikZ::Set::Line;      # line
66  require LaTeX::TikZ::Set::Rectangle; # rectangle
67  require LaTeX::TikZ::Set::Circle;    # circle
68
69  require LaTeX::TikZ::Mod::Raw;       # raw_mod
70
71  require LaTeX::TikZ::Mod::Clip;      # clip
72  require LaTeX::TikZ::Mod::Layer;     # layer
73
74  require LaTeX::TikZ::Mod::Width;     # width
75  require LaTeX::TikZ::Mod::Color;     # color
76  require LaTeX::TikZ::Mod::Fill;      # fill
77 }
78
79 =head1 AUTHOR
80
81 Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
82
83 You can contact me by mail or on C<irc.perl.org> (vincent).
84
85 =head1 BUGS
86
87 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>.
88 I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
89
90 =head1 SUPPORT
91
92 You can find documentation for this module with the perldoc command.
93
94     perldoc LaTeX::TikZ
95
96 =head1 COPYRIGHT & LICENSE
97
98 Copyright 2010 Vincent Pit, all rights reserved.
99
100 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
101
102 =cut
103
104 1; # End of LaTeX::TikZ::API