# Copyright (C) 2018 Avatao.com Innovative Learning Kft. # All Rights Reserved. See LICENSE file for details. from shlex import split from tfw.decorators.lazy_property import lazy_property class CommandsEqual: def __init__(self, command_1, command_2, fuzzyness=1): self.command_1 = split(command_1) self.command_2 = split(command_2) self.fuzzyness = fuzzyness def __bool__(self): return self.similarity >= self.fuzzyness @lazy_property def similarity(self): parts_1 = set(self.command_1) parts_2 = set(self.command_2) difference = parts_1 - parts_2 deviance = len(difference) / len(max(parts_1, parts_2)) return 1 - deviance