Updated Node.__cmp__ to work with other types.
authorFrederic Jolliton <frederic@jolliton.com>
Mon, 12 Sep 2005 03:08:03 +0000 (03:08 +0000)
committerFrederic Jolliton <frederic@jolliton.com>
Mon, 12 Sep 2005 03:08:03 +0000 (03:08 +0000)
 * Update Node.__cmp__ to work when compared with other type.
   In such case, comparison is done according to type of both
   object, instead of comparing values.
git-archimport-id: frederic@jolliton.com--2005-main/tx--main--0.1--patch-24

nodes.py

index 7a0f103..d50fc37 100644 (file)
--- a/nodes.py
+++ b/nodes.py
@@ -33,7 +33,7 @@ import time
 import re
 
 from error import Error, NodeError
-from misc import shortenText, typeOf
+from misc import shortenText, typeOf, stringValuesCompare
 
 # IMPORTANT: Additionnal import at end of module
 
@@ -288,8 +288,13 @@ class Node( object ) :
 
        def __cmp__( self , other ) :
 
-               assert isinstance( other , Node )
-               return cmp( self.dmStringValue() , other.dmStringValue() )
+               if other is self :
+                       return 0
+               elif isinstance( other , Node ) :
+                       return stringValuesCompare( self.iterStringValue() ,
+                                                                               other.iterStringValue() )
+               else :
+                       return cmp( type( self ) , type( other ) )
 
        def serialize( self , charset = 'utf8' , errors = 'strict' , file = None ) :