from pathex.expressions.nary_operators.nary_operator import NAryOperator
__all__ = ['Difference']
[docs]class Difference(NAryOperator):
"""
>>> from pathex.expressions.aliases import *
>>> exp = ( U('ab') + U('xy') ) - ( U('abxy') + U('abxy') )
>>> assert exp.get_language() == exp.get_generator().get_language() == set()
>>> exp = ( U('xab') + U('xy') ) - ( U('ab') + U('ab') )
>>> assert exp.get_language() == exp.get_generator().get_language() == \
{'ax', 'ay', 'bx', 'by', 'xx', 'xy'}
>>> exp = L('a') - L('b')
>>> assert exp.get_language() == exp.get_generator().get_language() == {'a'}
>>> exp = L('a') - L('a')
>>> assert exp.get_language() == exp.get_generator().get_language() == set()
>>> exp = C('ab') - 'abc'
>>> assert exp.get_language() == exp.get_generator().get_language() == {'ab'}
In the case of the presence of :class:`SingletonWords` object the difference may be given in a decomposed manner.
>>> exp = _+3 - C('ab')
>>> assert exp.get_language() == exp.get_generator().get_language() == {'-ab_', 'ab_', 'a-b_', '-a-b_'} # this is the same as {'___'}, but it is given decomposed.
>>> assert {''.join([str(c) for c in w]) for w in exp.get_eager_generator()} == {'-ab_', 'ab_', 'a-b_', '-a-b_'}
"""