Data-Header-Fields
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Data/Header/Fields.pm view on Meta::CPAN
my $self = shift;
my $lines = shift || (ref $self ? $self->_lines : []);
return
uniq
map {
$_->key
} @{$lines}
;
}
sub line_ending {
my $self = shift;
return "\n"
if not ref $self;
if (@_) {
$self->{line_ending} = shift;
}
$self->{line_ending} = "\n"
if (not $self->{line_ending});
return $self->{line_ending};
}
sub push_line {
my $self = shift;
my $line = shift;
my $lines = $self->_lines;
push(@$lines, $line);
return $self;
}
1;
package Data::Header::Fields::Value;
use Scalar::Util 'weaken', 'isweak';
use overload
'""' => \&as_string,
'cmp' => \&cmp,
;
sub new {
my $class = shift;
my $value = shift;
if (@_ == 0) {
if (not ref $value) {
$value = { 'value' => $value };
}
}
else {
$value = { $value, @_ };
}
my $self = bless { 'parent' => $class->_default_parent, %{$value} }, $class;
weaken($self->{'parent'})
if (ref($self->{'parent'}) && !isweak($self->{'parent'}));
return $self;
}
sub as_string {
my $self = shift;
# remove folding
my $line = $self->{value};
if ($self->parent->parent->tight_folding) {
$line =~ s/\n\s//xmsg;
}
else {
$line =~ s/\n(\s)/$1/xmsg;
}
$line =~ s/\r?\n$//;
$line = String::Escape::unprintable($line);
return $line;
}
sub cmp {
my $a = shift;
my $b = shift;
$a = $a->as_string if ref $a and $a->can('as_string');
$b = $b->as_string if ref $b and $b->can('as_string');
return $a cmp $b;
}
sub _default_parent {
return 'Data::Header::Fields::Line';
}
sub parent {
my $self = shift;
$self->{'parent'} = shift
if @_;
return (ref $self->{'parent'} ? $self->{'parent'} : $self->_default_parent);
}
sub value {
my $self = shift;
if (@_) {
$self->{'value'} = shift;
$self->parent->line_changed;
}
return $self->{'value'};
}
1;
package Data::Header::Fields::Line;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.375 second using v1.00-cache-2.02-grep-82fe00e-cpan-503542c4f10 )