package YAML::Error; use YAML::Mo; has 'code'; has 'type' => default => sub {'Error'}; has 'line'; has 'document'; has 'arguments' => default => sub {[]}; my ($error_messages, %line_adjust); sub format_message { my $self = shift; my $output = 'YAML ' . $self->type . ': '; my $code = $self->code; if ($error_messages->{$code}) { $code = sprintf($error_messages->{$code}, @{$self->arguments}); } $output .= $code . "\n"; $output .= ' Code: ' . $self->code . "\n" if defined $self->code; $output .= ' Line: ' . $self->line . "\n" if defined $self->line; $output .= ' Document: ' . $self->document . "\n" if defined $self->document; return $output; } sub error_messages { $error_messages; } %$error_messages = map {s/^\s+//;s/\\n/\n/;$_} split "\n", <<'...'; YAML_PARSE_ERR_BAD_CHARS Invalid characters in stream. This parser only supports printable ASCII YAML_PARSE_ERR_BAD_MAJOR_VERSION Can't parse a %s document with a 1.0 parser YAML_PARSE_WARN_BAD_MINOR_VERSION Parsing a %s document with a 1.0 parser YAML_PARSE_WARN_MULTIPLE_DIRECTIVES '%s directive used more than once' YAML_PARSE_ERR_TEXT_AFTER_INDICATOR No text allowed after indicator YAML_PARSE_ERR_NO_ANCHOR No anchor for alias '*%s' YAML_PARSE_ERR_NO_SEPARATOR Expected separator '---' YAML_PARSE_ERR_SINGLE_LINE Couldn't parse single line value YAML_PARSE_ERR_BAD_ANCHOR Invalid anchor YAML_DUMP_ERR_INVALID_INDENT Invalid Indent width specified: '%s' YAML_LOAD_USAGE usage: YAML::Load($yaml_stream_scalar) YAML_PARSE_ERR_BAD_NODE Can't parse node YAML_PARSE_ERR_BAD_EXPLICIT Unsupported explicit transfer: '%s' YAML_DUMP_USAGE_DUMPCODE Invalid value for DumpCode: '%s' YAML_LOAD_ERR_FILE_INPUT Couldn't open %s for input:\n%s YAML_DUMP_ERR_FILE_CONCATENATE Can't concatenate to YAML file %s YAML_DUMP_ERR_FILE_OUTPUT Couldn't open %s for output:\n%s YAML_DUMP_ERR_FILE_OUTPUT_CLOSE Error closing %s:\n%s YAML_DUMP_ERR_NO_HEADER With UseHeader=0, the node must be a plain hash or array YAML_DUMP_WARN_BAD_NODE_TYPE Can't perform serialization for node type: '%s' YAML_EMIT_WARN_KEYS Encountered a problem with 'keys':\n%s YAML_DUMP_WARN_DEPARSE_FAILED Deparse failed for CODE reference YAML_DUMP_WARN_CODE_DUMMY Emitting dummy subroutine for CODE reference YAML_PARSE_ERR_MANY_EXPLICIT More than one explicit transfer YAML_PARSE_ERR_MANY_IMPLICIT More than one implicit request YAML_PARSE_ERR_MANY_ANCHOR More than one anchor YAML_PARSE_ERR_ANCHOR_ALIAS Can't define both an anchor and an alias YAML_PARSE_ERR_BAD_ALIAS Invalid alias YAML_PARSE_ERR_MANY_ALIAS More than one alias YAML_LOAD_ERR_NO_CONVERT Can't convert implicit '%s' node to explicit '%s' node YAML_LOAD_ERR_NO_DEFAULT_VALUE No default value for '%s' explicit transfer YAML_LOAD_ERR_NON_EMPTY_STRING Only the empty string can be converted to a '%s' YAML_LOAD_ERR_BAD_MAP_TO_SEQ Can't transfer map as sequence. Non numeric key '%s' encountered. YAML_DUMP_ERR_BAD_GLOB '%s' is an invalid value for Perl glob YAML_DUMP_ERR_BAD_REGEXP '%s' is an invalid value for Perl Regexp YAML_LOAD_ERR_BAD_MAP_ELEMENT Invalid element in map YAML_LOAD_WARN_DUPLICATE_KEY Duplicate map key '%s' found. Ignoring. YAML_LOAD_ERR_BAD_SEQ_ELEMENT Invalid element in sequence YAML_PARSE_ERR_INLINE_MAP Can't parse inline map YAML_PARSE_ERR_INLINE_SEQUENCE Can't parse inline sequence YAML_PARSE_ERR_BAD_DOUBLE Can't parse double quoted string YAML_PARSE_ERR_BAD_SINGLE Can't parse single quoted string YAML_PARSE_ERR_BAD_INLINE_IMPLICIT Can't parse inline implicit value '%s' YAML_PARSE_ERR_BAD_IMPLICIT Unrecognized implicit value '%s' YAML_PARSE_ERR_INDENTATION Error. Invalid indentation level YAML_PARSE_ERR_INCONSISTENT_INDENTATION Inconsistent indentation level YAML_LOAD_WARN_UNRESOLVED_ALIAS Can't resolve alias *%s YAML_LOAD_WARN_NO_REGEXP_IN_REGEXP No 'REGEXP' element for Perl regexp YAML_LOAD_WARN_BAD_REGEXP_ELEM Unknown element '%s' in Perl regexp YAML_LOAD_WARN_GLOB_NAME No 'NAME' element for Perl glob YAML_LOAD_WARN_PARSE_CODE Couldn't parse Perl code scalar: %s YAML_LOAD_WARN_CODE_DEPARSE Won't parse Perl code unless $YAML::LoadCode is set YAML_EMIT_ERR_BAD_LEVEL Internal Error: Bad level detected YAML_PARSE_WARN_AMBIGUOUS_TAB Amibiguous tab converted to spaces YAML_LOAD_WARN_BAD_GLOB_ELEM Unknown element '%s' in Perl glob YAML_PARSE_ERR_ZERO_INDENT Can't use zero as an indentation width YAML_LOAD_WARN_GLOB_IO Can't load an IO filehandle. Yet!!! ... %line_adjust = map {($_, 1)} qw(YAML_PARSE_ERR_BAD_MAJOR_VERSION YAML_PARSE_WARN_BAD_MINOR_VERSION YAML_PARSE_ERR_TEXT_AFTER_INDICATOR YAML_PARSE_ERR_NO_ANCHOR YAML_PARSE_ERR_MANY_EXPLICIT YAML_PARSE_ERR_MANY_IMPLICIT YAML_PARSE_ERR_MANY_ANCHOR YAML_PARSE_ERR_ANCHOR_ALIAS YAML_PARSE_ERR_BAD_ALIAS YAML_PARSE_ERR_MANY_ALIAS YAML_LOAD_ERR_NO_CONVERT YAML_LOAD_ERR_NO_DEFAULT_VALUE YAML_LOAD_ERR_NON_EMPTY_STRING YAML_LOAD_ERR_BAD_MAP_TO_SEQ YAML_LOAD_ERR_BAD_STR_TO_INT YAML_LOAD_ERR_BAD_STR_TO_DATE YAML_LOAD_ERR_BAD_STR_TO_TIME YAML_LOAD_WARN_DUPLICATE_KEY YAML_PARSE_ERR_INLINE_MAP YAML_PARSE_ERR_INLINE_SEQUENCE YAML_PARSE_ERR_BAD_DOUBLE YAML_PARSE_ERR_BAD_SINGLE YAML_PARSE_ERR_BAD_INLINE_IMPLICIT YAML_PARSE_ERR_BAD_IMPLICIT YAML_LOAD_WARN_NO_REGEXP_IN_REGEXP YAML_LOAD_WARN_BAD_REGEXP_ELEM YAML_LOAD_WARN_REGEXP_CREATE YAML_LOAD_WARN_GLOB_NAME YAML_LOAD_WARN_PARSE_CODE YAML_LOAD_WARN_CODE_DEPARSE YAML_LOAD_WARN_BAD_GLOB_ELEM YAML_PARSE_ERR_ZERO_INDENT ); package YAML::Warning; our @ISA = 'YAML::Error'; 1;