Spaces:
Runtime error
Runtime error
import difflib as dl | |
import re | |
try: | |
from src.parameters import color | |
except: | |
from parameters import color | |
def strike(text): | |
''' | |
Adds strikesthrough the given text | |
Parameters | |
---------- | |
text : str | |
String to strikethrough | |
Returns | |
------- | |
content : str | |
Strikethrough text | |
''' | |
result = '' | |
for c in text: | |
result = result + c + '\u0336' | |
return result | |
def strikethrough_diff(original_license_text, modified_license_text): | |
''' | |
Compares the two strings and strikes through all words/characters that exist in the original text | |
and not in input text | |
Parameters | |
---------- | |
original_license_text : str | |
The text to compare it to. This is usually the official license text | |
modified_license_text : str | |
The text that is being compared with. This is usually the modified license text | |
Returns | |
------- | |
content : str | |
The strings with the uncommon words/characters strikethroughed | |
''' | |
original_license_text = original_license_text.replace("\n\n", " __para_break__ ") | |
modified_license_text = modified_license_text.replace("\n\n", " __para_break__ ") | |
original_license_tokens = re.split(" ", original_license_text.strip()) | |
modified_license_tokens = re.split(" ", modified_license_text.strip()) | |
processed_license_word_list = [] | |
for diff in dl.ndiff(original_license_tokens, modified_license_tokens): | |
if diff.strip().endswith('__para_break__'): | |
processed_license_word_list.append("\n\n") | |
elif diff == "- ": | |
processed_license_word_list.append((diff[2:] + "")) | |
elif diff.startswith('- '): | |
processed_license_word_list.append(f"""<mark style="color: {color.BLACK}; background-color:{color.RED}">{strike(diff.strip("- "))}</mark>""") | |
elif diff == "+ ": | |
processed_license_word_list.append((diff[2:] + "")) | |
elif diff.startswith("+ "): | |
processed_license_word_list.append( f"""<mark style="color: {color.BLACK}; background-color:{color.GREEN}">{diff.strip("+ ")}</mark>""") | |
elif diff.startswith("? "): | |
continue | |
else: | |
processed_license_word_list.append((diff[2:] + "")) | |
return " ".join(processed_license_word_list).replace(" __para_break__ ", "\n\n") | |