/usr/share/perl5/Rose/DB/Object/Metadata/ColumnList.pm is in librose-db-object-perl 1:0.797-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | package Rose::DB::Object::Metadata::ColumnList;
use strict;
use Rose::DB::Object::Metadata::Object;
our @ISA = qw(Rose::DB::Object::Metadata::Object);
our $VERSION = '0.02';
use overload
(
'""' => sub
{
my($self) = shift;
return join($", map { "$_" } @{$self->{'columns'} ||= $self->auto_init_columns});
},
fallback => 1,
);
sub columns
{
my($self) = shift;
my $meta = $self->parent;
if(@_)
{
# Force stringification in case they're column objects
# instead of just column names.
if(@_ == 1 && ref $_[0] eq 'ARRAY')
{
$self->{'columns'} = [ map { "$_" } @{$_[0]} ];
}
else
{
$self->{'columns'} = [ map { "$_" } @_ ];
}
}
return unless(defined wantarray);
unless($meta)
{
return wantarray ? @{$self->{'columns'} ||= []} : ($self->{'columns'} ||= []);
}
unless(@{$self->{'columns'} ||= []})
{
$self->{'columns'} = $self->auto_init_columns;
}
# Expand into columns on return
return wantarray ? map { $meta->column($_) || $_ } @{$self->{'columns'} ||= []} :
[ map { $meta->column($_) || $_ } @{$self->{'columns'} ||= []} ];
}
sub auto_init_columns { [] }
sub column_names
{
my($self) = shift;
if(@{$self->{'columns'} ||= []})
{
return wantarray ? @{$self->{'columns'}} : $self->{'columns'};
}
# This call with auto-init the columns if necessary
my $columns = $self->columns;
return wantarray ? @$columns : $columns;
}
sub add_columns
{
my($self) = shift;
if(@_ == 1 && ref $_[0] eq 'ARRAY')
{
push @{$self->{'columns'}}, map { "$_" } @{$_[0]};
}
else
{
push @{$self->{'columns'}}, map { "$_" } @_;
}
return;
}
*add_column = \&add_columns;
sub delete_columns
{
shift->{'columns'} = [];
return;
}
1;
|