1#!/usr/bin/env python 2# Copyright (c) 2012 The Chromium Authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6'''Exception types for GRIT. 7''' 8 9class Base(Exception): 10 '''A base exception that uses the class's docstring in addition to any 11 user-provided message as the body of the Base. 12 ''' 13 def __init__(self, msg=''): 14 if len(msg): 15 if self.__doc__: 16 msg = self.__doc__ + ': ' + msg 17 else: 18 msg = self.__doc__ 19 super(Base, self).__init__(msg) 20 21 22class Parsing(Base): 23 '''An error occurred parsing a GRD or XTB file.''' 24 pass 25 26 27class UnknownElement(Parsing): 28 '''An unknown node type was encountered.''' 29 pass 30 31 32class MissingElement(Parsing): 33 '''An expected element was missing.''' 34 pass 35 36 37class UnexpectedChild(Parsing): 38 '''An unexpected child element was encountered (on a leaf node).''' 39 pass 40 41 42class UnexpectedAttribute(Parsing): 43 '''The attribute was not expected''' 44 pass 45 46 47class UnexpectedContent(Parsing): 48 '''This element should not have content''' 49 pass 50 51 52class MissingMandatoryAttribute(Parsing): 53 '''This element is missing a mandatory attribute''' 54 pass 55 56 57class MutuallyExclusiveMandatoryAttribute(Parsing): 58 '''This element has 2 mutually exclusive mandatory attributes''' 59 pass 60 61 62class DuplicateKey(Parsing): 63 '''A duplicate key attribute was found.''' 64 pass 65 66 67class TooManyExamples(Parsing): 68 '''Only one <ex> element is allowed for each <ph> element.''' 69 pass 70 71 72class GotPathExpectedFilenameOnly(Parsing): 73 '''The 'filename' attribute of <output> and the 'file' attribute of <part> 74 must be bare filenames, not paths. 75 ''' 76 pass 77 78 79class FileNotFound(Parsing): 80 '''The resource file was not found. 81 ''' 82 pass 83 84 85class InvalidMessage(Base): 86 '''The specified message failed validation.''' 87 pass 88 89 90class InvalidTranslation(Base): 91 '''Attempt to add an invalid translation to a clique.''' 92 pass 93 94 95class NoSuchTranslation(Base): 96 '''Requested translation not available''' 97 pass 98 99 100class NotReady(Base): 101 '''Attempt to use an object before it is ready, or attempt to translate 102 an empty document.''' 103 pass 104 105 106class TooManyPlaceholders(Base): 107 '''Too many placeholders for elements of the same type.''' 108 pass 109 110 111class MismatchingPlaceholders(Base): 112 '''Placeholders do not match.''' 113 pass 114 115 116class InvalidPlaceholderName(Base): 117 '''Placeholder name can only contain A-Z, a-z, 0-9 and underscore.''' 118 pass 119 120 121class BlockTagInTranslateableChunk(Base): 122 '''A block tag was encountered where it wasn't expected.''' 123 pass 124 125 126class SectionNotFound(Base): 127 '''The section you requested was not found in the RC file. Make 128sure the section ID is correct (matches the section's ID in the RC file). 129Also note that you may need to specify the RC file's encoding (using the 130encoding="" attribute) if it is not in the default Windows-1252 encoding. 131 ''' 132 pass 133 134 135class IdRangeOverlap(Base): 136 '''ID range overlap.''' 137 pass 138 139