services.code_service module
Code Service Module
שירות עיבוד וניתוח קוד עבור Code Keeper Bot.
מודול זה מספק wrapper לפונקציונליות עיבוד קוד, כולל: - זיהוי שפות תכנות - הדגשת תחביר - ניתוח קוד - חיפוש בקוד
- services.code_service.detect_language(code, filename)[מקור]
מקור אמת לזיהוי שפה: דטקטור דומייני. נשמרים fallback-ים ישנים לתאימות, אך החלטה סופית מגיעה מהדומיין כאשר אפשר.
- services.code_service.clean_pasted_code(code, file_name)[מקור]
הניקוי המינימלי לקוד שמודבק בבוט — הדלת של ה-handlers אליו.
ה-handlers אינם מייבאים את שכבת הדומיין (
tests/unit/architecture/test_layer_boundaries.py), ולכן הם עוברים כאן. מה מנוקה ומה לא — ב-docstring שלsrc.domain.services.code_normalizer.clean_pasted_code(); כאן רק נקבע אם הקובץ הוא Markdown, לפי השם (is_markdown_filename()).כל זרימה בבוט קוראת לזה פעם אחת, ממש לפני השמירה, כשגם הקוד וגם השם ידועים.
Noneהוא טקסט ריק:context.user_dataיכול לאבד את הקוד בין שלבי השיחה, והזרימות תמיד שמרו אז מחרוזת ריקה.
- services.code_service.format_cleanup_notice(cleanup)[מקור]
השורות שהבוט מוסיף להודעת ההצלחה: מה נוקה, ואזהרה על תווי כיווניות.
מחרוזת ריקה כשאין מה לומר. בלי השורה הזו הניקוי היה קורה בשקט, וזה בדיוק מה שהוחלף כאן. הטקסט אינו מכיל אף תו מבין
_*`[]<>&: הוא נכנס להודעות עםparse_modeשל Markdown וגם של HTML, ותו כזה היה משנה את העיצוב או מפיל את השליחה ב-BadRequest.- Return type:
- פרמטרים:
cleanup (PasteCleanup)
- services.code_service.format_bidi_warning(line_numbers)[מקור]
המשפט האחד על תווי embedding, override ו-isolate — לבוט ולוובאפ.
מחרוזת ריקה כשאין שורות. בלי אייקון ובלי סיומת: הבוט מוסיף ”⚠️“ ו“לא נגעתי בהם“ (
format_cleanup_notice()), והוובאפ מציג אותו בבאנר משלו (bidi_warning_for_display()). כך הניסוח חי במקום אחד.
- services.code_service.bidi_warning_for_display(code)[מקור]
האזהרה שמוצגת לצד קוד בוובאפ, או מחרוזת ריקה כשאין בו תווים כאלה.
התווים נשמרים כמו שנשלחו, ולכן עמוד שמציג קוד צריך להזהיר עליהם בעצמו. אילו עמודים כבר מזהירים ואילו עוד לא — ב-
docs/quality/code-normalization.md, ו-tests/test_bidi_warning_pages_match_the_doc.pyמשווה את הרשימה לקוד. מספרי השורות הם של הטקסט שמקבלים כאן; עמוד שממספר אחרת (Pygments חותך שורות ריקות מההתחלה) מעביר את הטקסט שהוא מציג.
- services.code_service.extract_functions(code, language)[מקור]
Extract function definitions from code.