Ad

אנגליתצרפתיתספרדי

עורך חינם באינטרנט | DOC > | XLS > | PPT >


סמל OffiDocs

בדיקת דקדוק של רכיבי שפה

OffiDocs מספקת את OpenOffice אונליין ולכן אנו מעוניינים בבדיקת הדקדוק של Lingucomponent שמטרותיו לעצב, לפתח ולהטמיע בודק דקדוק לאנגלית ושפות נתמכות אחרות. ממשק API של בודק דקדוק זמין ב-OpenOffice.org מאז גרסה 3.0.

בדיקת דקדוק נתפסת כיישום מסוים של תהליך איטרציה וסימון טקסט, תהליכי איטרציה/סימון אחרים כמו בדיקת איות או תיוג חכם בעצם יכולים לעבוד באותו אופן (אם כי כרגע הם לא מיושמים כך). אם בדיקת דקדוק מוזכרת בתיעוד הבא ניתן לראות בכך מציין מיקום למשימה הכללית יותר של סימון טקסט. מכיוון שהאובייקטים המבצעים את איטרציית הטקסט מודעים לתהליך הסימון המסוים שהם משמשים עבורו, ניתן בעצם לכוונן את האיטרציה לצורכי תהליך זה.

תהליך בדיקת הדקדוק מורכב מ

- מסמך אחד או יותר לבדיקה

- מימוש בודק דקדוק אחד או יותר, כל אחד תומך בשפה אחת לפחות.

- תיבת דו-שיח אחת או יותר של בדיקת דקדוק (לכל היותר מופע אחד לכל מסמך)

- תפריט הקשר אחד בעת לחיצה על טקסט המסומן כלא תקין

- איטרטור גלובלי לבדיקת דקדוק (משותף לכל המסמכים) המיושם כיחיד, בודק משפט אחד (של מסמך שרירותי) בכל פעם.

- אובייקט חוט אחד לכל בודק דקדוק המשמש לביצוע הבדיקה מבלי לחסום את ה-GUI

- אובייקטים החוזרים בטקסט של מסמך, אובייקט אחד המייצג משימת בדיקת דקדוק בודדת שהתבקשה

- אובייקטים המייצגים בלוקי טקסט במסמך טקסט ("פסקאות שטוחות") המופשטים מהמבנה הקונקרטי של המסמך ומספקים גישה לטקסט על ידי מחרוזות טקסט פשוטות וערכי מספרים שלמים המתארים מיקומים ואורכים של מחרוזת משנה.

 

אובייקטים והממשקים שלהם

יש לנו שלושה חלקים שעובדים יחד. החלק הראשון מגיע מהמסמך הנבדק והוא יישום ספציפי לסוג המסמך המסוים (למשל Writer או Calc). זה מקפל את הגישה לטקסט של המסמך. מסמך המבקש להיבדק עבור שגיאות דקדוק חייב לתמוך בממשק com.sun.star.text.XFlatParagraphIteratorProvider. באמצעות ממשק זה הוא חייב להיות מסוגל לספק אובייקטים המטמיעים com.sun.star.text.XFlatParagraphIterator שבעצמם מחזירים אובייקטים המיישמים com.sun.star.text.XFlatParagraph. הממשק האחרון נגזר מ-com.sun.star.text.XTextMarkup. בהמשך נקרא לאובייקטים אלה "איטרטורים שטוחים של פסקאות" (FPIterator) ו"פסקאות שטוחות" (FP). אם נעשה שימוש במילה "פיסקה" זה יציין גם "FP", לא פסקה אמיתית במסמך, שכן לא תמיד שניהם זהים.

FP הוא לא בהכרח פסקה כמו בהקשר של המסמכים, הוא יכול להיות אוסף שלהם (למשל רשימה) והוא לא מכיל רק את טקסט הזרימה אלא גם תוכן טקסט אחר כמו מסגרות טקסט, כותרות עליונות ותחתונות וכו'. ליבת המסמך יכולה להתמודד עם אובייקטי FP כאלה ביעילות. זהו יישום ספציפי למסמך. ה-FP אינו חושף את מבנה הטקסט הפנימי המלא או את התכונות שלו, התוכן שלו נגיש רק כמחרוזת המכילה את גוש הטקסט המלא.

FPIterator הוא אובייקט המאפשר לבצע איטרציה דרך כל אובייקטי ה-FP שמרכיבים יחד את תוכן הטקסט של המסמך. סדר חזרת הפסקאות הוא שרירותי ופרט יישום של ה-FPIterator. תוכן הטקסט ה"רגיל" בדרך כלל צריך להיות מסופק בכיוון הקריאה, אבל איך טקסט אחר כמו כותרות עליונות ותחתונות (שקיימים רק פעם אחת אבל חוזרים על עצמם בכל עמוד) או מסגרות טקסט (שעשויות להיות מוטמעות בטקסט הזרימה) לא נקבע מראש. איטרציה באמצעות טקסט מוקצה תמיד לתהליך סימון טקסט שיתייחס לכל המסמך. לפיכך, האיטרציה תתעטף בסוף המסמך והיא לא תסתיים לפני שכל הפסקאות סומנו כ"מסומנות" עבור תהליך הסימון המסוים (כמו בדיקת דקדוק). פסקאות המסומנות כ"מסומנות" ידלגו באיטרציה. אז עבור לקוחות של FPIterator זה פשוט להשתמש בהם: בקש ממנו אובייקטי FP חדשים עד שאף אחד לא יוחזר ולא אכפת לך איך זה מיושם.

החלק השני הוא בודק דקדוק. בודק דקדוק הוא רכיב המיישם את הממשק com.sun.star.linguistic2.XGrammarChecker. עבור כל שפה עשוי להיות רכיב מסוים שמסוגל לבדוק שגיאות דקדוק בשפה זו. התצורה תספר איזה רכיב אחראי לאיזו שפה. היישום של com.sun.star.linguistic2.XGrammarChecker המייצג רכיב מסוים יקלוט את ה-API ה"פרטי" של רכיב בדיקת הדקדוק הזה. API פרטי זה יכול להיות מבוסס UNO או Java טהור, ממשק CLI או COM, C API וכו', כל מה שניתן להשתמש בו או לגשר אליו בתוך יישום של ממשק UNO. מכיוון שהממשק די קטן, זה לא אמור להיות מסובך מאוד לעטוף בודקים דקדוקיים קיימים לשימוש בהם ב-OpenOffice.org.

באמצע נמצא המרכיב השלישי, המתווך בין השניים האחרים. הוא מיישם את ה"היגיון" של תהליך בדיקת הדקדוק. מכיוון שהוא מדבר עם שני החלקים האחרים על ידי UNO API המוגדר שלהם, רק החלק האמצעי הזה אינו תלוי בסוג המסמך המסוים או מרכיב בדיקת הדקדוק. שירות UNO בשם com.sun.star.linguistic2.GrammarCheckingIterator הוא הרכיב שמבצע למעשה את תהליך בדיקת הדקדוק עבור כל התרחישים הנתמכים. זהו יחיד השולט בכל תהליכי בדיקת הדקדוק הפועלים ובכך גם מכיר את כל רכיבי בדיקת הדקדוק הקיימים. הוא מיישם את הממשק com.sun.star.linguistic2.XGrammarCheckingIterator וגם מספק אובייקט המיישם את com.sun.star.linguistic2.XGrammarCheckingResultListener. להלן אובייקט זה ייקרא GCIterator.


הפעלה Chrome Extensions

Ad