mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-11-04 11:12:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			1012 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1012 B
		
	
	
	
		
			Python
		
	
	
	
	
	
# 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, must_begin_similarly=True):
 | 
						|
        self.command_1 = split(command_1)
 | 
						|
        self.command_2 = split(command_2)
 | 
						|
        self.fuzzyness = fuzzyness
 | 
						|
        self.must_begin_similarly = must_begin_similarly
 | 
						|
 | 
						|
    def __bool__(self):
 | 
						|
        if self.must_begin_similarly and not self.beginnings_are_equal:
 | 
						|
            return False
 | 
						|
 | 
						|
        return self.similarity >= self.fuzzyness
 | 
						|
 | 
						|
    @lazy_property
 | 
						|
    def beginnings_are_equal(self):
 | 
						|
        return self.command_1[0] == self.command_2[0]
 | 
						|
 | 
						|
    @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
 |