लिंगुकंपोनेंट ग्रामर चेकिंग
OffiDocs ओपनऑफिस ऑनलाइन प्रदान करता है इसलिए हम लिंगुकंपोनेंट ग्रामर चेकिंग में रुचि रखते हैं जिसका लक्ष्य अंग्रेजी और अन्य समर्थित भाषाओं के लिए व्याकरण चेकर को डिजाइन करना, विकसित करना और कार्यान्वित करना है। संस्करण 3.0 के बाद से OpenOffice.org में एक व्याकरण परीक्षक एपीआई उपलब्ध है।
व्याकरण की जाँच को एक पाठ पुनरावृत्ति और मार्कअप प्रक्रिया के एक विशेष कार्यान्वयन के रूप में देखा जाता है, अन्य पुनरावृत्ति/मार्कअप प्रक्रियाएँ जैसे वर्तनी जाँच या स्मार्ट टैगिंग मूल रूप से उसी तरह काम कर सकती हैं (हालाँकि वर्तमान में वे इस तरह लागू नहीं होती हैं)। यदि निम्नलिखित दस्तावेज़ में व्याकरण जाँच का उल्लेख किया गया है तो इसे टेक्स्ट मार्कअप के अधिक सामान्य कार्य के लिए प्लेसहोल्डर के रूप में देखा जा सकता है। जैसा कि पाठ पुनरावृत्ति करने वाली वस्तुओं को उस विशेष मार्कअप प्रक्रिया के बारे में पता होता है, जिसके लिए उनका उपयोग किया जाता है, मूल रूप से उस प्रक्रिया की जरूरतों के लिए पुनरावृत्ति को ठीक करना संभव है।
व्याकरण जाँच प्रक्रिया में शामिल हैं
- एक या एक से अधिक दस्तावेजों की जांच की जानी है
- एक या अधिक व्याकरण परीक्षक कार्यान्वयन, प्रत्येक कम से कम एक भाषा का समर्थन करता है।
- एक या अधिक व्याकरण जाँच संवाद (प्रति दस्तावेज़ अधिकतम एक उदाहरण)
- गलत के रूप में चिह्नित पाठ पर क्लिक करने पर एक संदर्भ मेनू
- एक ग्लोबल ग्रामर चेकिंग इटरेटर (सभी दस्तावेजों के लिए सामान्य) सिंगलटन के रूप में लागू किया गया, एक समय में एक वाक्य (एक मनमाने दस्तावेज़ का) की जाँच करना।
- एक थ्रेड ऑब्जेक्ट प्रति ग्रामर चेकर जिसका उपयोग GUI को ब्लॉक किए बिना चेकिंग करने के लिए किया जाता है
- एक दस्तावेज़ के पाठ के माध्यम से पुनरावृत्ति करने वाली वस्तुएं, एक एकल व्याकरण जाँच कार्य का प्रतिनिधित्व करने वाली एक वस्तु जिसका अनुरोध किया गया था
- एक पाठ दस्तावेज़ ("फ्लैट पैराग्राफ") में टेक्स्ट ब्लॉक का प्रतिनिधित्व करने वाली वस्तुएं जो दस्तावेज़ की ठोस संरचना से सार करती हैं और सरल पाठ स्ट्रिंग्स और उप स्ट्रिंग की स्थिति और लंबाई का वर्णन करने वाले पूर्णांक मानों द्वारा पाठ तक पहुंच प्रदान करती हैं।
वस्तुएं और उनके इंटरफेस
हमारे तीन हिस्से एक साथ काम कर रहे हैं। पहला भाग चेक किए जा रहे दस्तावेज़ से आता है और यह एक कार्यान्वयन है जो विशेष प्रकार के दस्तावेज़ (जैसे लेखक या कैल्क) के लिए विशिष्ट है। यह दस्तावेज़ के पाठ तक पहुंच को समाहित करता है। व्याकरण की त्रुटियों के लिए जाँच किए जाने वाले दस्तावेज़ को इंटरफ़ेस com.sun.star.text.XFlatParagraphIteratorProvider का समर्थन करना चाहिए। इस इंटरफ़ेस के माध्यम से यह com.sun.star.text.XFlatParagraphIterator को लागू करने वाली वस्तुओं को प्रदान करने में सक्षम होना चाहिए जो स्वयं com.sun.star.text.XFlatParagraph को लागू करने वाली वस्तुओं को लौटाते हैं। बाद वाला इंटरफ़ेस com.sun.star.text.XTextMarkup से लिया गया है। निम्नलिखित में हम इन वस्तुओं को "फ्लैट पैराग्राफ इटरेटर" (एफपीइटरेटर) और "फ्लैट पैराग्राफ" (एफपी) कहेंगे। यदि शब्द "अनुच्छेद" का उपयोग किया जाता है तो यह "एफपी" को भी इंगित करेगा, दस्तावेज़ में वास्तविक अनुच्छेद नहीं है क्योंकि दोनों हमेशा समान नहीं होते हैं।
दस्तावेज़ के संदर्भ में एक एफपी आवश्यक रूप से एक पैराग्राफ नहीं है, यह उनका एक संग्रह हो सकता है (उदाहरण के लिए एक सूची) और इसमें न केवल प्रवाह पाठ होता है बल्कि अन्य पाठ्य सामग्री जैसे टेक्स्ट फ्रेम, हेडर और फुटर आदि भी होते हैं। दस्तावेज़ कोर ऐसे एफपी ऑब्जेक्ट ऑब्जेक्ट्स को कुशलतापूर्वक संभाल सकता है यह एक दस्तावेज़ विशिष्ट कार्यान्वयन है। एफपी पूर्ण आंतरिक पाठ संरचना या इसकी विशेषताओं को प्रकट नहीं करता है, इसकी सामग्री केवल पूर्ण टेक्स्ट ब्लॉक वाली स्ट्रिंग के रूप में पहुंच योग्य है।
एक FPIterator एक वस्तु है जो सभी FP वस्तुओं के माध्यम से पुनरावृति करने की अनुमति देता है जो एक साथ दस्तावेज़ पाठ सामग्री बनाते हैं। जिस क्रम में पैराग्राफ पुनरावृत्त होते हैं वह मनमाना है और FPIterator का कार्यान्वयन विवरण है। "नियमित" पाठ सामग्री को आमतौर पर पढ़ने की दिशा में प्रदान किया जाना चाहिए, लेकिन अन्य पाठ जैसे शीर्ष लेख और पादलेख (जो केवल एक बार मौजूद होते हैं लेकिन हर पृष्ठ पर दोहराए जाते हैं) या पाठ फ़्रेम (जो प्रवाह पाठ में एम्बेड किए जा सकते हैं) कैसे फिट होते हैं पूर्व निर्धारित नहीं। पाठ के माध्यम से पुनरावृति हमेशा एक पाठ मार्कअप प्रक्रिया को सौंपी जाती है जो पूरे दस्तावेज़ का इलाज करेगी। इस प्रकार पुनरावृत्ति दस्तावेज़ के अंत में लपेटी जाएगी और विशेष मार्कअप प्रक्रिया (जैसे व्याकरण की जाँच) के लिए सभी पैराग्राफों को "चेक" के रूप में चिह्नित किए जाने से पहले समाप्त नहीं होगी। "चेक किए गए" के रूप में चिह्नित किए गए पैराग्राफ पुनरावृत्ति में छोड़ दिए जाएंगे। तो एक FPIterator के ग्राहकों के लिए उनका उपयोग करना सरल है: इसे नए FP ऑब्जेक्ट्स के लिए पूछें जब तक कि कोई भी वापस न आए और इसकी परवाह न करें कि यह कैसे लागू होता है।
दूसरा भाग व्याकरण परीक्षक है। एक व्याकरण परीक्षक इंटरफ़ेस com.sun.star.linguistic2.XGrammarChecker को लागू करने वाला एक घटक है। प्रत्येक भाषा के लिए एक विशेष घटक हो सकता है जो इस भाषा में व्याकरण की त्रुटियों की जाँच करने में सक्षम हो। कॉन्फ़िगरेशन बताएगा कि कौन सा घटक किस भाषा के लिए ज़िम्मेदार है। एक विशेष घटक का प्रतिनिधित्व करने वाले com.sun.star.linguistic2.XGrammarChecker का कार्यान्वयन इस व्याकरण जाँच घटक के "निजी" API को समाहित करेगा। यह निजी एपीआई यूएनओ आधारित या शुद्ध जावा, एक सीएलआई या कॉम इंटरफ़ेस, एक सी एपीआई इत्यादि हो सकता है, जो कि यूएनओ इंटरफ़ेस के कार्यान्वयन के अंदर इस्तेमाल किया जा सकता है या ब्रिज किया जा सकता है। चूंकि इंटरफ़ेस बहुत छोटा है इसलिए मौजूदा व्याकरण चेकर्स को OpenOffice.org में उपयोग करने के लिए लपेटना बहुत जटिल नहीं होना चाहिए।
बीच में तीसरा घटक है, जो अन्य दो के बीच मध्यस्थता करता है। यह व्याकरण जाँच प्रक्रिया के "तर्क" को लागू करता है। जैसा कि यह उनके परिभाषित यूएनओ एपीआई द्वारा अन्य दो भागों से बात करता है, केवल यह मध्य भाग विशेष दस्तावेज़ प्रकार या व्याकरण जाँच घटक से स्वतंत्र है। com.sun.star.linguistic2.GrammarCheckingIterator नामक UNO सेवा वह घटक है जो वास्तव में सभी समर्थित परिदृश्यों के लिए व्याकरण जाँच प्रक्रिया को पूरा करता है। यह एक सिंगलटन है जो सभी चल रही व्याकरण जाँच प्रक्रियाओं को नियंत्रित करता है और इस प्रकार सभी मौजूदा व्याकरण जाँच घटकों को भी जानता है। यह इंटरफ़ेस com.sun.star.linguistic2.XGrammarCheckingIterator को लागू करता है और com.sun.star.linguistic2.XGrammarCheckingResultListener को लागू करने वाली वस्तु भी प्रदान करता है। निम्नलिखित में इस वस्तु को GCIterator कहा जाएगा।