Spaces:
Sleeping
Sleeping
| def text_to_unicode_braille(braille_text): | |
| """ | |
| Convert Braille dots notation to Unicode Braille symbols. | |
| Args: | |
| braille_text: Braille text in dots notation | |
| Returns: | |
| Text with Unicode Braille symbols | |
| """ | |
| # Mapping from Braille dots to Unicode Braille patterns | |
| # Unicode Braille patterns start at U+2800 (⠀) | |
| unicode_base = 0x2800 | |
| # Convert each Braille character to its Unicode equivalent | |
| unicode_braille = "" | |
| for char in braille_text: | |
| # Check if the character is a standard Braille pattern | |
| if char in "⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿": | |
| unicode_braille += char | |
| else: | |
| # For non-Braille characters, keep them as is | |
| unicode_braille += char | |
| return unicode_braille | |
| def create_braille_html(braille_text): | |
| """ | |
| Create HTML to display Braille with proper styling. | |
| Args: | |
| braille_text: Braille text (either in dots or Unicode) | |
| Returns: | |
| HTML string for displaying Braille | |
| """ | |
| # Convert to Unicode Braille if not already | |
| unicode_braille = text_to_unicode_braille(braille_text) | |
| # Replace newlines with <br> tags before using in f-string | |
| formatted_text = unicode_braille.replace('\n', '<br>') | |
| # Create HTML with proper styling | |
| html = f""" | |
| <div style="font-family: 'Courier New', monospace; font-size: 20px; line-height: 1.5; | |
| background-color: #f5f5f5; padding: 15px; border-radius: 5px;"> | |
| {formatted_text} | |
| </div> | |
| """ | |
| return html | |
| def create_braille_comparison(text, braille_text): | |
| """ | |
| Create a side-by-side comparison of text and its Braille representation. | |
| Args: | |
| text: Original text | |
| braille_text: Braille translation | |
| Returns: | |
| HTML string for displaying the comparison | |
| """ | |
| # Convert to Unicode Braille | |
| unicode_braille = text_to_unicode_braille(braille_text) | |
| # Split into lines | |
| text_lines = text.split('\n') | |
| braille_lines = unicode_braille.split('\n') | |
| # Ensure both lists have the same length | |
| max_lines = max(len(text_lines), len(braille_lines)) | |
| text_lines = text_lines + [''] * (max_lines - len(text_lines)) | |
| braille_lines = braille_lines + [''] * (max_lines - len(braille_lines)) | |
| # Create HTML table for comparison | |
| html = """ | |
| <style> | |
| .braille-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| } | |
| .braille-table td { | |
| padding: 8px; | |
| vertical-align: top; | |
| border-bottom: 1px solid #ddd; | |
| } | |
| .braille-text { | |
| font-family: 'Courier New', monospace; | |
| font-size: 20px; | |
| background-color: #f5f5f5; | |
| } | |
| .original-text { | |
| font-family: Arial, sans-serif; | |
| } | |
| </style> | |
| <table class="braille-table"> | |
| <tr> | |
| <th>Original Text</th> | |
| <th>Braille Representation</th> | |
| </tr> | |
| """ | |
| for i in range(max_lines): | |
| html += f""" | |
| <tr> | |
| <td class="original-text">{text_lines[i]}</td> | |
| <td class="braille-text">{braille_lines[i]}</td> | |
| </tr> | |
| """ | |
| html += "</table>" | |
| return html | |