Integers are now handled correctly by printTree.
[confparser-old] / confparser.py
index 835a2f3..1ddcd9d 100644 (file)
@@ -69,10 +69,13 @@ def parseConf( p , meta = None ) :
                #
                values = []
                while 1 :
-                       t = p.next( 'string' , '{' , ';' )
+                       t = p.next( 'string' , 'integer' , '{' , ';' )
                        if t[ 0 ] in [ '{' , ';' ] :
                                break
-                       values.append( parseString( t[ 1 ] ) )
+                       if t[ 0 ] == 'integer' :
+                               values.append( int( t[ 1 ] ) )
+                       else :
+                               values.append( parseString( t[ 1 ] ) )
                #
                # Contents
                #
@@ -100,6 +103,7 @@ def parse( doc , filename = None ) :
        tokenMatches = {
                'eot'     : '$' ,
                'blank'   : r'\s+' ,
+               'integer' : r'[0-9]+' ,
                'keyword' : r'[_a-zA-Z][_a-zA-Z0-9]*' ,
                'string'  : r'[_a-zA-Z][_a-zA-Z0-9]*|\'(?:[^\\\']|\\.)*\'' ,
                'comment' : r'#[^\n]*(?:\n|$)' ,
@@ -162,7 +166,7 @@ def readConfiguration( filename , validator = None ) :
                #
                r = readCachedConfiguration( filename )
                cached = False
-               if r :
+               if r is not None :
                        conf , isValid = r
                        cached = True
                else :
@@ -177,12 +181,14 @@ def readConfiguration( filename , validator = None ) :
                        # 3. Validate it
                        #
                        if validator is not None :
-                               basicvalidator.checkConf( conf , validator )
+                               basicvalidator.validate( conf , validator )
                                isValid = True
+                               cached = False
                #
                # 4. Keep cached result
                #
-               writeCachedConfiguration( filename , conf , isValid )
+               if not cached :
+                       writeCachedConfiguration( filename , conf , isValid )
        except IOError , e :
                if e[ 0 ] == errno.ENOENT :
                        conf = None
@@ -199,7 +205,7 @@ def printTreeInner( t , prt = sys.stdout.write , prefix = '' ) :
        prt( prefix )
        prt( t[ 0 ] )
        for kw in t[ 1 ] :
-               prt( ' ' + kw )
+               prt( ' ' + str( kw ) )
        if t[ 2 ] :
                prt( ' {' )
        else :