home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / Error.pm < prev    next >
Encoding:
Perl POD Document  |  2002-06-18  |  6.3 KB  |  209 lines

  1. package YAML::Error;
  2. use strict;
  3. use YAML;
  4. use Carp;
  5.  
  6. my ($error_messages, %line_adjust);
  7.  
  8. sub new {
  9.     my ($class, $code, $line, $document, @args) = @_;
  10.     croak "No such YAML error message: '$code'" 
  11.       unless defined $error_messages->{$code}; 
  12.     croak "Invalid YAML error code: $code\n"
  13.       unless $code =~ 
  14.         /^YAML_(PARSE|LOAD|DUMP|EMIT)_(ERR|WARN|USAGE)(_\w+)?$/;
  15.     my ($operation, $severity) = ($1, $2);
  16.     my $msg = sprintf($error_messages->{$code}, @args);
  17.     $msg =~ s/\\n/\n/g;
  18.     $class = 'YAML::Warning' if $severity eq 'WARN';
  19.     my $self = bless { code => $code,
  20.                        msg => $msg, 
  21.                  }, $class;  
  22.     if ($severity ne 'USAGE' and 
  23.         $operation eq 'LOAD' or 
  24.         $operation eq 'PARSE'
  25.        ) {
  26.         $self->{line} = $line - ($line_adjust{$code} || 0);
  27.         $self->{document} = $document if defined $document;
  28.     }
  29.     $self
  30. }
  31.  
  32. sub msg { $_[0]->{msg} }
  33.  
  34. sub dump {
  35.     my ($self) = @_;
  36.     local $YAML::Indent = 4;
  37.     local $YAML::UseHeader = 1;
  38.     local $YAML::UseVersion = 0;
  39.     local $YAML::SortKeys = [qw(code msg line document)];
  40.     YAML::Dump($self)
  41.  
  42. %$error_messages = map {s/^\s+//;$_} split "\n", <<'...';
  43. YAML_PARSE_ERR_BAD_CHARS
  44.   Invalid characters in stream. This parser only supports printable ASCII
  45. YAML_PARSE_ERR_NO_FINAL_NEWLINE
  46.   Stream does not end with newline character
  47. YAML_PARSE_ERR_BAD_MAJOR_VERSION
  48.   Can't parse a %s document with a 1.0 parser
  49. YAML_PARSE_WARN_BAD_MINOR_VERSION
  50.   Parsing a %s document with a 1.0 parser
  51. YAML_PARSE_WARN_MULTIPLE_DIRECTIVES
  52.   '%s directive used more than once'
  53. YAML_PARSE_ERR_TEXT_AFTER_INDICATOR
  54.   No text allowed after indicator
  55. YAML_PARSE_ERR_NO_ANCHOR
  56.   No anchor for alias '*%s'
  57. YAML_PARSE_ERR_NO_SEPARATOR
  58.   Expected separator '---'
  59. YAML_PARSE_ERR_SINGLE_LINE
  60.   Couldn't parse single line value
  61. YAML_PARSE_ERR_BAD_ANCHOR
  62.   Invalid anchor
  63. YAML_DUMP_ERR_INVALID_INDENT
  64.   Invalid Indent width specified: '%s'
  65. YAML_LOAD_USAGE
  66.   usage: YAML::Load($yaml_stream_scalar)
  67. YAML_PARSE_ERR_BAD_NODE
  68.   Can't parse node
  69. YAML_PARSE_ERR_BAD_EXPLICIT
  70.   Unsupported explicit transfer: '%s'
  71. YAML_DUMP_USAGE_DUMPCODE
  72.   Invalid value for DumpCode: '%s'
  73. YAML_LOAD_ERR_FILE_INPUT
  74.   Couldn't open %s for input:\n%s
  75. YAML_DUMP_ERR_FILE_CONCATENATE
  76.   Can't concatenate to YAML file %s
  77. YAML_DUMP_ERR_FILE_OUTPUT
  78.   Couldn't open %s for output:\n%s
  79. YAML_DUMP_ERR_NO_HEADER
  80.   With UseHeader=0, the node must be a plain hash or array
  81. YAML_DUMP_WARN_BAD_NODE_TYPE
  82.   Can't perform serialization for node type %s
  83. YAML_EMIT_WARN_KEYS
  84.   Encountered a problem with 'keys':\n%s
  85. YAML_DUMP_WARN_DEPARSE_FAILED
  86.   Deparse failed for CODE reference
  87. YAML_DUMP_WARN_CODE_DUMMY
  88.   Emitting dummy subroutine for CODE reference
  89. YAML_PARSE_ERR_MANY_EXPLICIT
  90.   More than one explicit transfer
  91. YAML_PARSE_ERR_MANY_IMPLICIT
  92.   More than one implicit request
  93. YAML_PARSE_ERR_MANY_ANCHOR
  94.   More than one anchor
  95. YAML_PARSE_ERR_ANCHOR_ALIAS
  96.   Can't define both an anchor and an alias
  97. YAML_PARSE_ERR_BAD_ALIAS
  98.   Invalid alias
  99. YAML_PARSE_ERR_MANY_ALIAS
  100.   More than one alias
  101. YAML_LOAD_ERR_NO_CONVERT
  102.   Can't convert implicit '%s' node to explicit '%s' node
  103. YAML_LOAD_ERR_NO_DEFAULT_VALUE
  104.   No default value for '%s' explicit transfer
  105. YAML_LOAD_ERR_NON_EMPTY_STRING
  106.   Only the empty string can be converted to a '%s'
  107. YAML_LOAD_ERR_BAD_MAP_TO_SEQ
  108.   Can't transfer map as sequence. Non numeric key '%s' encountered.
  109. YAML_DUMP_ERR_BAD_GLOB
  110.   '%s' is an invalid value for Perl glob
  111. YAML_DUMP_ERR_BAD_REGEXP
  112.   '%s' is an invalid value for Perl Regexp
  113. YAML_DUMP_WARN_STORE
  114.   YAML::Store has been deprecated in favor of YAML::Dump
  115. YAML_LOAD_ERR_BAD_STR_TO_INT
  116.   Can't transfer string to integer
  117. YAML_LOAD_ERR_BAD_STR_TO_DATE
  118.   Can't transfer string to date object
  119. YAML_LOAD_ERR_BAD_STR_TO_TIME
  120.   Can't transfer string to time object
  121. YAML_LOAD_ERR_BAD_MAP_ELEMENT
  122.   Invalid element in map
  123. YAML_LOAD_WARN_DUPLICATE_KEY
  124.   Duplicate map key found. Ignoring.
  125. YAML_LOAD_ERR_BAD_SEQ_ELEMENT
  126.   Invalid element in sequence
  127. YAML_PARSE_ERR_INLINE_MAP
  128.   Can't parse inline map
  129. YAML_PARSE_ERR_INLINE_SEQUENCE
  130.   Can't parse inline sequence
  131. YAML_PARSE_ERR_BAD_DOUBLE
  132.   Can't parse double quoted string
  133. YAML_PARSE_ERR_BAD_SINGLE
  134.   Can't parse single quoted string
  135. YAML_PARSE_ERR_BAD_INLINE_IMPLICIT
  136.   Can't parse inline implicit value '%s'
  137. YAML_PARSE_ERR_BAD_IMPLICIT
  138.   Unrecognized implicit value '%s'
  139. YAML_PARSE_ERR_INDENTATION
  140.   Error. Invalid indentation level
  141. YAML_PARSE_ERR_INCONSISTENT_INDENTATION
  142.   Inconsistent indentation level
  143. YAML_LOAD_WARN_UNRESOLVED_ALIAS
  144.   Can't resolve alias *%s
  145. YAML_LOAD_WARN_NO_REGEXP_IN_REGEXP
  146.   No 'REGEXP' element for Perl regexp
  147. YAML_LOAD_WARN_BAD_REGEXP_ELEM
  148.   Unknown element '%s' in Perl regexp
  149. YAML_LOAD_WARN_REGEXP_CREATE
  150.   Couldn't create regexp qr(%s)%s: %s
  151. YAML_LOAD_WARN_GLOB_NAME
  152.   No 'NAME' element for Perl glob
  153. YAML_LOAD_WARN_PARSE_CODE
  154.   Couldn't parse Perl code scalar: %s
  155. YAML_LOAD_WARN_CODE_DEPARSE
  156.   Won't parse Perl code unless $YAML::LoadCode is set
  157. YAML_EMIT_ERR_BAD_LEVEL
  158.   Internal Error: Bad level detected
  159. YAML_PARSE_WARN_AMBIGUOUS_TAB
  160.   Amibiguous tab converted to spaces
  161. YAML_LOAD_WARN_BAD_GLOB_ELEM
  162.   Unknown element '%s' in Perl glob
  163. YAML_PARSE_ERR_ZERO_INDENT
  164.   Can't use zero as an indentation width
  165. YAML_LOAD_WARN_GLOB_IO
  166.   Can't load an IO filehandle. Yet!!!
  167. ...
  168.  
  169. %line_adjust = map {($_, 1)} 
  170.   qw(YAML_PARSE_ERR_BAD_MAJOR_VERSION
  171.      YAML_PARSE_WARN_BAD_MINOR_VERSION 
  172.      YAML_PARSE_ERR_TEXT_AFTER_INDICATOR 
  173.      YAML_PARSE_ERR_NO_ANCHOR 
  174.      YAML_PARSE_ERR_MANY_EXPLICIT
  175.      YAML_PARSE_ERR_MANY_IMPLICIT
  176.      YAML_PARSE_ERR_MANY_ANCHOR
  177.      YAML_PARSE_ERR_ANCHOR_ALIAS
  178.      YAML_PARSE_ERR_BAD_ALIAS
  179.      YAML_PARSE_ERR_MANY_ALIAS
  180.      YAML_LOAD_ERR_NO_CONVERT
  181.      YAML_LOAD_ERR_NO_DEFAULT_VALUE
  182.      YAML_LOAD_ERR_NON_EMPTY_STRING
  183.      YAML_LOAD_ERR_BAD_MAP_TO_SEQ
  184.      YAML_LOAD_ERR_BAD_STR_TO_INT
  185.      YAML_LOAD_ERR_BAD_STR_TO_DATE
  186.      YAML_LOAD_ERR_BAD_STR_TO_TIME
  187.      YAML_LOAD_WARN_DUPLICATE_KEY
  188.      YAML_PARSE_ERR_INLINE_MAP
  189.      YAML_PARSE_ERR_INLINE_SEQUENCE
  190.      YAML_PARSE_ERR_BAD_DOUBLE
  191.      YAML_PARSE_ERR_BAD_SINGLE
  192.      YAML_PARSE_ERR_BAD_INLINE_IMPLICIT
  193.      YAML_PARSE_ERR_BAD_IMPLICIT
  194.      YAML_LOAD_WARN_NO_REGEXP_IN_REGEXP
  195.      YAML_LOAD_WARN_BAD_REGEXP_ELEM
  196.      YAML_LOAD_WARN_REGEXP_CREATE
  197.      YAML_LOAD_WARN_GLOB_NAME
  198.      YAML_LOAD_WARN_PARSE_CODE
  199.      YAML_LOAD_WARN_CODE_DEPARSE
  200.      YAML_LOAD_WARN_BAD_GLOB_ELEM
  201.      YAML_PARSE_ERR_ZERO_INDENT
  202.     );
  203.  
  204. package YAML::Warning;
  205. use base 'YAML::Error';
  206.  
  207. 1;
  208.