Use boolean_value() for 'and' and 'or' operators

This commit is contained in:
Davide Brunato 2019-10-07 18:04:04 +02:00
parent ad41660f9e
commit 9e2e5d45e3
2 changed files with 11 additions and 7 deletions

View File

@ -2,8 +2,10 @@
CHANGELOG
*********
`v1.3.0`_ (TBD)
===============
`v1.3.0`_ (2019-10-07)
======================
* Improved XSD type matching using paths
* Cached parent path for XPathContext (only Python 3)
* Improve typed selection with TypedAttribute and TypedElement named tuples
* Add iter_results to XPathContext
* Fix descendant shortcut operator '//'
@ -157,4 +159,4 @@ CHANGELOG
.. _v1.1.9: https://github.com/brunato/elementpath/compare/v1.1.8...v1.1.9
.. _v1.2.0: https://github.com/brunato/elementpath/compare/v1.1.9...v1.2.0
.. _v1.2.1: https://github.com/brunato/elementpath/compare/v1.2.0...v1.2.1
.. _v1.2.2: https://github.com/brunato/elementpath/compare/v1.2.1...v1.2.2
.. _v1.3.0: https://github.com/brunato/elementpath/compare/v1.2.1...v1.3.0

View File

@ -519,15 +519,17 @@ def select(self, context=None):
@method(infix('or', bp=20))
def evaluate(self, context=None):
if context is None:
return bool(self[0].evaluate() or self[1].evaluate())
return bool(self[0].evaluate(context.copy()) or self[1].evaluate(context.copy()))
return self.boolean_value(self[0].evaluate()) or self.boolean_value(self[1].evaluate())
return self.boolean_value(self[0].evaluate(context.copy())) or \
self.boolean_value(self[1].evaluate(context.copy()))
@method(infix('and', bp=25))
def evaluate(self, context=None):
if context is None:
return bool(self[0].evaluate() and self[1].evaluate())
return bool(self[0].evaluate(context.copy()) and self[1].evaluate(context.copy()))
return self.boolean_value(self[0].evaluate()) and self.boolean_value(self[1].evaluate())
return self.boolean_value(self[0].evaluate(context.copy())) and \
self.boolean_value(self[1].evaluate(context.copy()))
@method(infix('=', bp=30))