fix after removing auto_deref
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object.pm
CommitLineData
4f4fd192 1use MooseX::Declare;
2class SQL::Translator::Object {
3 use Tie::IxHash;
8dc32349 4 use MooseX::MultiMethods;
6381c78d 5 use MooseX::Types::Moose qw(Any ArrayRef HashRef Str);
8dc32349 6
7 has '_comments' => (
720dcdc3 8 traits => ['Array'],
8dc32349 9 isa => ArrayRef,
720dcdc3 10 handles => {
98cff1fd 11 _comments => 'elements',
720dcdc3 12 add_comment => 'push',
13 remove_last_comment => 'pop',
8dc32349 14 },
15 default => sub { [] },
8dc32349 16 );
17
2850baeb 18 has '_options' => (
720dcdc3 19 traits => ['Array'],
2850baeb 20 isa => ArrayRef,
720dcdc3 21 handles => {
98cff1fd 22 _options => 'elements',
720dcdc3 23 add_option => 'push',
24 remove_last_option => 'pop',
2850baeb 25 },
26 default => sub { [] },
2850baeb 27 );
28
6381c78d 29 has '_extra' => (
720dcdc3 30 traits => ['Hash'],
6381c78d 31 is => 'rw',
32 isa => HashRef,
720dcdc3 33 handles => {
34 exists_extra => 'exists',
35 extra_ids => 'keys',
36 get_extras => 'values',
37 get_extra => 'get',
38 add_extra => 'set',
6381c78d 39 },
40 default => sub { {} },
6381c78d 41 );
42
891cdee7 43 multi method comments(Str $comment) { $self->add_comment($comment); $self->comments }
44 multi method comments(ArrayRef $comments) { $self->add_comment($_) for @$comments; $self->comments }
36465f86 45 multi method comments(Any $) { wantarray ? $self->_comments : join "\n", $self->_comments }
2850baeb 46
891cdee7 47 multi method options(Str $option) { $self->add_option($option); $self->options }
48 multi method options(ArrayRef $options) { $self->add_option($_) for @$options; $self->options }
36465f86 49 multi method options(Any $) { wantarray ? $self->_options : $self->_options }
6381c78d 50
ef79fbfb 51 multi method extra(Str $extra) { $self->get_extra($extra) }
52 multi method extra(HashRef $extra) { $self->add_extra($_, $extra->{$_}) for keys %$extra; $self->extra }
6381c78d 53 multi method extra(Any $) { wantarray ? %{$self->_extra} : $self->_extra }
4f4fd192 54}