mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			Convert fancy characters to ordinary ones
This will help screen readersmerge-requests/30/head
							parent
							
								
									0e69a62785
								
							
						
					
					
						commit
						6e8f07a916
					
				
							
								
								
									
										39
									
								
								filters.py
								
								
								
								
							
							
						
						
									
										39
									
								
								filters.py
								
								
								
								
							| 
						 | 
				
			
			@ -11,44 +11,7 @@ import os
 | 
			
		|||
from utils import acct_dir
 | 
			
		||||
from utils import text_in_file
 | 
			
		||||
from utils import remove_eol
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _standardize_text_range(text: str,
 | 
			
		||||
                            range_start: int, range_end: int,
 | 
			
		||||
                            offset: str) -> str:
 | 
			
		||||
    """Convert any fancy characters within the given range into ordinary ones
 | 
			
		||||
    """
 | 
			
		||||
    offset = ord(offset)
 | 
			
		||||
    ctr = 0
 | 
			
		||||
    text = list(text)
 | 
			
		||||
    while ctr < len(text):
 | 
			
		||||
        val = ord(text[ctr])
 | 
			
		||||
        if val in range(range_start, range_end):
 | 
			
		||||
            text[ctr] = chr(val - range_start + offset)
 | 
			
		||||
        ctr += 1
 | 
			
		||||
    return "".join(text)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def standardize_text(text: str) -> str:
 | 
			
		||||
    """Converts fancy unicode text to ordinary letters
 | 
			
		||||
    """
 | 
			
		||||
    fancy_ranges = (
 | 
			
		||||
        119990, 120094, 120198, 120042, 119990, 120146, 119886
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    for range_start in fancy_ranges:
 | 
			
		||||
        range_end = range_start + 26
 | 
			
		||||
        text = _standardize_text_range(text, range_start, range_end, 'a')
 | 
			
		||||
 | 
			
		||||
        range_start = range_end
 | 
			
		||||
        range_end = range_start + 26
 | 
			
		||||
        text = _standardize_text_range(text, range_start, range_end, 'A')
 | 
			
		||||
 | 
			
		||||
    text = _standardize_text_range(text, 65345, 65345 + 26, 'a')
 | 
			
		||||
    text = _standardize_text_range(text, 65313, 65313 + 26, 'A')
 | 
			
		||||
    text = _standardize_text_range(text, 119964, 119964 + 26, 'A')
 | 
			
		||||
 | 
			
		||||
    return text
 | 
			
		||||
from utils import standardize_text
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def add_filter(base_dir: str, nickname: str, domain: str, words: str) -> bool:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								tests.py
								
								
								
								
							
							
						
						
									
										2
									
								
								tests.py
								
								
								
								
							| 
						 | 
				
			
			@ -54,6 +54,7 @@ from follow import clear_followers
 | 
			
		|||
from follow import send_follow_request_via_server
 | 
			
		||||
from follow import send_unfollow_request_via_server
 | 
			
		||||
from siteactive import site_is_active
 | 
			
		||||
from utils import standardize_text
 | 
			
		||||
from utils import remove_eol
 | 
			
		||||
from utils import text_in_file
 | 
			
		||||
from utils import convert_published_to_local_timezone
 | 
			
		||||
| 
						 | 
				
			
			@ -189,7 +190,6 @@ from blocking import add_cw_from_lists
 | 
			
		|||
from happening import dav_month_via_server
 | 
			
		||||
from happening import dav_day_via_server
 | 
			
		||||
from webapp_theme_designer import color_contrast
 | 
			
		||||
from filters import standardize_text
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TEST_SERVER_GROUP_RUNNING = False
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										46
									
								
								utils.py
								
								
								
								
							
							
						
						
									
										46
									
								
								utils.py
								
								
								
								
							| 
						 | 
				
			
			@ -40,6 +40,44 @@ INVALID_CHARACTERS = (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _standardize_text_range(text: str,
 | 
			
		||||
                            range_start: int, range_end: int,
 | 
			
		||||
                            offset: str) -> str:
 | 
			
		||||
    """Convert any fancy characters within the given range into ordinary ones
 | 
			
		||||
    """
 | 
			
		||||
    offset = ord(offset)
 | 
			
		||||
    ctr = 0
 | 
			
		||||
    text = list(text)
 | 
			
		||||
    while ctr < len(text):
 | 
			
		||||
        val = ord(text[ctr])
 | 
			
		||||
        if val in range(range_start, range_end):
 | 
			
		||||
            text[ctr] = chr(val - range_start + offset)
 | 
			
		||||
        ctr += 1
 | 
			
		||||
    return "".join(text)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def standardize_text(text: str) -> str:
 | 
			
		||||
    """Converts fancy unicode text to ordinary letters
 | 
			
		||||
    """
 | 
			
		||||
    fancy_ranges = (
 | 
			
		||||
        119990, 120094, 120198, 120042, 119990, 120146, 119886
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    for range_start in fancy_ranges:
 | 
			
		||||
        range_end = range_start + 26
 | 
			
		||||
        text = _standardize_text_range(text, range_start, range_end, 'a')
 | 
			
		||||
 | 
			
		||||
        range_start = range_end
 | 
			
		||||
        range_end = range_start + 26
 | 
			
		||||
        text = _standardize_text_range(text, range_start, range_end, 'A')
 | 
			
		||||
 | 
			
		||||
    text = _standardize_text_range(text, 65345, 65345 + 26, 'a')
 | 
			
		||||
    text = _standardize_text_range(text, 65313, 65313 + 26, 'A')
 | 
			
		||||
    text = _standardize_text_range(text, 119964, 119964 + 26, 'A')
 | 
			
		||||
 | 
			
		||||
    return text
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def remove_eol(line: str):
 | 
			
		||||
    """Removes line ending characters
 | 
			
		||||
    """
 | 
			
		||||
| 
						 | 
				
			
			@ -150,17 +188,19 @@ def get_content_from_post(post_json_object: {}, system_language: str,
 | 
			
		|||
            if this_post_json[map_dict].get(system_language):
 | 
			
		||||
                sys_lang = this_post_json[map_dict][system_language]
 | 
			
		||||
                if isinstance(sys_lang, str):
 | 
			
		||||
                    return this_post_json[map_dict][system_language]
 | 
			
		||||
                    content = this_post_json[map_dict][system_language]
 | 
			
		||||
                    return standardize_text(content)
 | 
			
		||||
            else:
 | 
			
		||||
                # is there a contentMap/summaryMap entry for one of
 | 
			
		||||
                # the understood languages?
 | 
			
		||||
                for lang in languages_understood:
 | 
			
		||||
                    if this_post_json[map_dict].get(lang):
 | 
			
		||||
                        return this_post_json[map_dict][lang]
 | 
			
		||||
                        content = this_post_json[map_dict][lang]
 | 
			
		||||
                        return standardize_text(content)
 | 
			
		||||
    else:
 | 
			
		||||
        if isinstance(this_post_json[content_type], str):
 | 
			
		||||
            content = this_post_json[content_type]
 | 
			
		||||
    return content
 | 
			
		||||
    return standardize_text(content)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_media_descriptions_from_post(post_json_object: {}) -> str:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue