Lot of untested changes.
[confparser-old] / validator.py
1 class ValidatorError( Exception ) : pass
2
3 def error( what ) :
4
5         raise ValidatorError( what )
6
7 class Validator :
8
9         def __init__( self , name ) :
10
11                 self.name = name
12
13         def descend( self , item ) :
14
15                 # Return a validator for the contents
16                 # of the node 'item', or throw an exception.
17                 error( 'Invalid keyword `%r\' in `%r\'.' % ( item , self.name ) )
18
19         def check( self , values ) :
20
21                 # Check node values.
22                 if values :
23                         error( 'Unexpected values %r for `%r\'.' % ( values , self.name ) )
24
25         def valid( self ) :
26
27                 pass
28
29 class MixinNonEmpty :
30
31         children = 0
32
33         def valid( self ) :
34
35                 if not self.children :
36                         error( 'Empty block for `%r\'.' % self.name )