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 )