pathex.expressions.nary_operators.difference module

class Difference(*args)[source]

Bases: pathex.expressions.nary_operators.nary_operator.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 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_'}
arguments: Collection