Nihal D'Souza
Final app release
e41b03f
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")