Acme-MITHALDU-XSGrabBag
view release on metacpan or search on metacpan
inc/Inline/denter.pm view on Meta::CPAN
sub indent_array {
my ($o, $data) = @_;
my $stream = $o->_print_ref($data, '@', 'ARRAY');
return $$stream if ref $stream;
my $indent = ++$o->{level} * $o->{width};
for my $datum (@$data) {
$stream .= ' ' x $indent;
$stream .= $o->indent_data($datum);
}
$o->{level}--;
return $stream;
}
sub indent_scalar {
my ($o, $data) = @_;
my $stream = $o->_print_ref($data, q{$}, 'SCALAR');
return $$stream if ref $stream;
my $indent = ($o->{level} + 1) * $o->{width};
$stream .= ' ' x $indent;
$stream .= $o->indent_data($$data);
return $stream;
}
sub indent_ref {
my ($o, $data) = @_;
my $stream = $o->_print_ref($data, '\\', 'SCALAR');
return $$stream if ref $stream;
chomp $stream;
return $stream . $o->indent_data($$data);
}
sub indent_undef {
my ($o, $data) = @_;
my $stream = "?\n";
$stream .= $o->{key}, $o->{key} = '' if $o->{key};
return $stream;
}
sub indent_name {
my ($o, $name, $value) = @_;
$name =~ s/^.*:://;
my $stream = $name . $o->{comma};
$stream .= $o->indent_data($value);
return $stream;
}
sub _print_ref {
my ($o, $data, $symbol, $type) = @_;
$data =~ /^(([\w:]+)=)?$type\(0x([0-9a-f]+)\)$/
or croak "Invalid reference: $data\n";
my $stream = $symbol;
$stream .= $2 if defined $2;
$o->{xref}{$3}++;
croak "Inline::denter does not handle duplicate references"
if $o->{xref}{$3} > 1;
$stream .= "\n";
$stream .= $o->{key}, $o->{key} = '' if $o->{key};
return $stream;
}
# Undent error messages
sub M01_invalid_indent_width {
my $o = shift;
"Invalid indent width detected at line $o->{line}\n";
}
sub M02_no_key_end_marker {
my ($marker, $line) = @_;
"No terminating marker '$marker' found for key at line $line\n";
}
sub M03_no_value_end_marker {
my ($marker, $line) = @_;
"No terminating marker '$marker' found for value at line $line\n";
}
sub M04_mismatched_quotes {
my $o = shift;
"Mismatched double quotes for value at line $o->{line}\n";
}
sub M05_invalid_key_value {
my $o = shift;
"Missing or invalid hash key/value pair at $o->{line}\n";
}
sub M06_invalid_indent_level {
my $o = shift;
"Invalid indentation level at $o->{line}\n";
}
sub M07_invalid_scalar_value {
my $o = shift;
"Invalid value for scalar ref context at $o->{line}\n";
}
1;
( run in 0.842 second using v1.01-cache-2.11-cpan-98e64b0badf )