| import re | |
| import logging | |
| logger = logging.getLogger("Refiner") | |
| class Refiner: | |
| def refine(data: dict) -> dict: | |
| try: | |
| if 'sections' in data and isinstance(data['sections'], list): | |
| for section in data['sections']: | |
| if 'steps' in section and isinstance(section['steps'], list): | |
| for step in section['steps']: | |
| # חשוב: אנחנו מנקים רק את block_math מדולרים | |
| # את content_mixed אנחנו משאירים עם דולרים כדי שהאפליקציה תרנדר! | |
| if 'block_math' in step: | |
| step['block_math'] = Refiner._clean_latex_block(step['block_math']) | |
| return data | |
| except Exception as e: | |
| logger.error(f"Refinement error: {e}") | |
| return data | |
| def _clean_latex_block(tex: str) -> str: | |
| if not tex or tex == 'null': return "" | |
| s = str(tex) | |
| # בבלוק מתמטי נקי לא צריך דולרים | |
| s = s.replace('$$', '').replace('$', '') | |
| s = s.replace('-', '−') # מינוס יפה | |
| return s.strip() |