21 lines
853 B
Python
21 lines
853 B
Python
from rainbowadn.data.atomic.plain import Plain
|
|
from rainbowadn.data.collection.trees.comparison.comparator import Comparison, Left, Right
|
|
from rainbowadn.data.collection.trees.comparison.protocolcomparator import ProtocolComparator
|
|
from rainbowadn.hashing.hashpoint import HashPoint
|
|
|
|
__all__ = ('PlainComparator',)
|
|
|
|
|
|
class PlainComparator(ProtocolComparator[Plain]):
|
|
def compare(self, original: HashPoint[Plain], key: HashPoint[Plain]) -> Comparison:
|
|
assert isinstance(original, HashPoint)
|
|
assert isinstance(key, HashPoint)
|
|
original_value = self.resolver.resolve(original)
|
|
key_value = self.resolver.resolve(key)
|
|
if key_value.source < original_value.source:
|
|
return Left()
|
|
elif key_value.source > original_value.source:
|
|
return Right()
|
|
else:
|
|
return self.equal
|