package XUL::App::Schema;
use strict;
use warnings;
#use Smart::Comments;
use XUL::App::XULFile;
use XUL::App::JSFile;
use XUL::App::XPIFile;
use XUL::App;
use Object::Declare (
mapping => {
xulfile => sub { XUL::App::XULFile->new({@_}) },
jsfile => sub { XUL::App::JSFile->new({@_}) },
xpifile => sub { XUL::App::XPIFile->new({@_}) },
},
aliases => {
generated => 'generated_from',
requires => 'prereqs',
includes => 'prereqs',
},
copula => {
is => '',
are => '',
from => '',
#overlays => '',
#targets => 'targets',
#requires => '',
},
);
use base 'Exporter';
our @EXPORT = qw(
schema xulfile jsfile xpifile
overlays includes requires targets
);
sub overlays ($) { overlays is @_; }
sub includes (@) {
if (@_ == 1) {
includes is $_[0];
} else {
includes are @_;
}
}
sub requires (@) {
if (@_ == 1) {
requires is $_[0];
} else {
requires are @_;
}
}
sub targets ($) { targets are @_; }
sub schema (&) {
my $code = shift;
my $from = caller;
no warnings 'redefine';
my @params = &declare($code);
#### @params
XUL::App->FILES({@params});
my $files = XUL::App->FILES();
### files: $files
no strict 'refs';
push @{$from . '::ISA'}, 'XUL::App';
return ();
}
1;