Lingucomponent വ്യാകരണ പരിശോധന
OffiDocs ഓൺലൈനായി ഓപ്പൺഓഫീസ് നൽകുന്നു, അതിനാൽ ഇംഗ്ലീഷിനും പിന്തുണയ്ക്കുന്ന മറ്റ് ഭാഷകൾക്കുമായി ഒരു വ്യാകരണ ചെക്കർ രൂപകൽപ്പന ചെയ്യുകയും വികസിപ്പിക്കുകയും നടപ്പിലാക്കുകയും ചെയ്യുക എന്നതാണ് ആരുടെ ലക്ഷ്യങ്ങൾ എന്ന Lingucomponent വ്യാകരണ പരിശോധനയിൽ ഞങ്ങൾക്ക് താൽപ്പര്യമുണ്ട്. പതിപ്പ് 3.0 മുതൽ OpenOffice.org-ൽ ഒരു വ്യാകരണ പരിശോധന API ലഭ്യമാണ്.
വ്യാകരണ പരിശോധന ഒരു ടെക്സ്റ്റ് ആവർത്തനത്തിന്റെയും മാർക്ക്അപ്പ് പ്രക്രിയയുടെയും ഒരു പ്രത്യേക നിർവ്വഹണമായി കാണുന്നു, മറ്റ് ആവർത്തന/മാർക്ക്അപ്പ് പ്രക്രിയകളായ സ്പെൽ ചെക്കിംഗ് അല്ലെങ്കിൽ സ്മാർട്ട് ടാഗിംഗ് അടിസ്ഥാനപരമായി അതേ രീതിയിൽ പ്രവർത്തിക്കാൻ കഴിയും (നിലവിൽ അവ നടപ്പിലാക്കിയിട്ടില്ലെങ്കിലും). ഇനിപ്പറയുന്ന ഡോക്യുമെന്റേഷനിൽ വ്യാകരണ പരിശോധന പരാമർശിച്ചിട്ടുണ്ടെങ്കിൽ, ടെക്സ്റ്റ് മാർക്ക്അപ്പിന്റെ കൂടുതൽ പൊതുവായ ടാസ്ക്കിനുള്ള ഒരു പ്ലെയ്സ്ഹോൾഡറായി ഇത് കാണാം. ടെക്സ്റ്റ് ആവർത്തനം നടത്തുന്ന ഒബ്ജക്റ്റുകൾക്ക് അവ ഉപയോഗിക്കുന്ന പ്രത്യേക മാർക്ക്അപ്പ് പ്രക്രിയയെക്കുറിച്ച് അറിയാവുന്നതിനാൽ ആ പ്രക്രിയയുടെ ആവശ്യങ്ങൾക്കായി ആവർത്തനത്തെ മികച്ച രീതിയിൽ ട്യൂൺ ചെയ്യാൻ അടിസ്ഥാനപരമായി സാധ്യമാണ്.
വ്യാകരണ പരിശോധന പ്രക്രിയയിൽ ഉൾപ്പെടുന്നു
- ഒന്നോ അതിലധികമോ രേഖകൾ പരിശോധിക്കേണ്ടതുണ്ട്
- ഒന്നോ അതിലധികമോ വ്യാകരണ പരിശോധന നടപ്പിലാക്കലുകൾ, ഓരോന്നും കുറഞ്ഞത് ഒരു ഭാഷയെയെങ്കിലും പിന്തുണയ്ക്കുന്നു.
- ഒന്നോ അതിലധികമോ വ്യാകരണ പരിശോധന ഡയലോഗുകൾ (ഒരു ഡോക്യുമെന്റിന് പരമാവധി ഒരു സന്ദർഭത്തിൽ)
- തെറ്റായി അടയാളപ്പെടുത്തിയ വാചകത്തിൽ ക്ലിക്ക് ചെയ്യുമ്പോൾ ഒരു സന്ദർഭ മെനു
- ഒരു ഗ്ലോബൽ വ്യാകരണ പരിശോധന ഇറ്ററേറ്റർ (എല്ലാ ഡോക്യുമെന്റുകൾക്കും പൊതുവായുള്ളത്) സിംഗിൾടൺ ആയി നടപ്പിലാക്കി, ഒരു സമയം ഒരു വാചകം (ഒരു അനിയന്ത്രിതമായ പ്രമാണത്തിന്റെ) പരിശോധിക്കുന്നു.
- GUI തടയാതെ തന്നെ പരിശോധന നടത്താൻ ഉപയോഗിക്കുന്ന ഒരു വ്യാകരണ ചെക്കറിന് ഒരു ത്രെഡ് ഒബ്ജക്റ്റ്
- ഒരു പ്രമാണത്തിന്റെ വാചകത്തിലൂടെ ആവർത്തിക്കുന്ന ഒബ്ജക്റ്റുകൾ, അഭ്യർത്ഥിച്ച ഒരൊറ്റ വ്യാകരണ പരിശോധന ടാസ്ക്കിനെ പ്രതിനിധീകരിക്കുന്ന ഒരു ഒബ്ജക്റ്റ്
- ഒരു ടെക്സ്റ്റ് ഡോക്യുമെന്റിലെ ടെക്സ്റ്റ് ബ്ലോക്കുകളെ പ്രതിനിധീകരിക്കുന്ന ഒബ്ജക്റ്റുകൾ (“ഫ്ലാറ്റ് പാരഗ്രാഫുകൾ”) അത് പ്രമാണത്തിന്റെ മൂർത്തമായ ഘടനയിൽ നിന്ന് സംഗ്രഹിക്കുകയും ഉപ സ്ട്രിംഗിന്റെ സ്ഥാനങ്ങളും നീളവും വിവരിക്കുന്ന ലളിതമായ ടെക്സ്റ്റ് സ്ട്രിംഗുകളും പൂർണ്ണസംഖ്യ മൂല്യങ്ങളും ഉപയോഗിച്ച് ടെക്സ്റ്റിലേക്ക് പ്രവേശനം നൽകുന്നു.
വസ്തുക്കളും അവയുടെ ഇന്റർഫേസുകളും
ഞങ്ങൾക്ക് മൂന്ന് ഭാഗങ്ങൾ ഒരുമിച്ച് പ്രവർത്തിക്കുന്നു. ആദ്യഭാഗം പരിശോധിക്കപ്പെടുന്ന ഡോക്യുമെന്റിൽ നിന്നാണ് വരുന്നത്, ഇത് ഒരു പ്രത്യേക തരം ഡോക്യുമെന്റിന് (ഉദാ: റൈറ്റർ അല്ലെങ്കിൽ കാൽക്) പ്രത്യേകമായ ഒരു നടപ്പാക്കലാണ്. ഇത് പ്രമാണത്തിന്റെ വാചകത്തിലേക്കുള്ള പ്രവേശനം ഉൾക്കൊള്ളുന്നു. വ്യാകരണ പിശകുകൾക്കായി പരിശോധിക്കാൻ ആഗ്രഹിക്കുന്ന ഒരു പ്രമാണം 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. ഖണ്ഡികകൾ ആവർത്തിക്കുന്ന ക്രമം ഏകപക്ഷീയവും FPIterator-ന്റെ നടപ്പാക്കൽ വിശദാംശവുമാണ്. "പതിവ്" ടെക്സ്റ്റ് ഉള്ളടക്കം സാധാരണയായി വായനാ ദിശയിൽ നൽകണം, എന്നാൽ തലക്കെട്ടുകളും അടിക്കുറിപ്പുകളും (ഒരിക്കൽ മാത്രം നിലനിൽക്കുന്നതും എല്ലാ പേജിലും ആവർത്തിക്കുന്നവ) അല്ലെങ്കിൽ ടെക്സ്റ്റ് ഫ്രെയിമുകളോ (ഫ്ലോ ടെക്സ്റ്റിലേക്ക് ഉൾച്ചേർത്തിരിക്കാവുന്ന) മറ്റ് ടെക്സ്റ്റ് എങ്ങനെ യോജിക്കുന്നു മുൻകൂട്ടി നിശ്ചയിച്ചിട്ടില്ല. ടെക്സ്റ്റ് മുഖേനയുള്ള ആവർത്തനം എല്ലായ്പ്പോഴും ഒരു ടെക്സ്റ്റ് മാർക്ക്അപ്പ് പ്രക്രിയയ്ക്ക് നിയോഗിക്കപ്പെടുന്നു, അത് മുഴുവൻ പ്രമാണത്തെയും കൈകാര്യം ചെയ്യും. അങ്ങനെ ആവർത്തനം ഡോക്യുമെന്റിന്റെ അവസാനം പൊതിയുകയും എല്ലാ ഖണ്ഡികകളും പ്രത്യേക മാർക്ക്അപ്പ് പ്രോസസ്സിനായി "ചെക്ക്" എന്ന് അടയാളപ്പെടുത്തുന്നതിന് മുമ്പ് അവസാനിക്കുകയും ചെയ്യും (വ്യാകരണ പരിശോധന പോലെ). "പരിശോധിച്ചു" എന്ന് അടയാളപ്പെടുത്തിയ ഖണ്ഡികകൾ ആവർത്തനത്തിൽ ഒഴിവാക്കപ്പെടും. അതിനാൽ ഒരു FPIterator-ന്റെ ക്ലയന്റുകൾക്ക് അവ ഉപയോഗിക്കുന്നത് വളരെ ലളിതമാണ്: ഒന്നും തിരികെ ലഭിക്കുന്നതുവരെ പുതിയ FP ഒബ്ജക്റ്റുകൾക്കായി ആവശ്യപ്പെടുക, അത് എങ്ങനെ നടപ്പിലാക്കും എന്നതിനെക്കുറിച്ച് ശ്രദ്ധിക്കേണ്ടതില്ല.
രണ്ടാം ഭാഗം ഒരു വ്യാകരണ പരിശോധനയാണ്. com.sun.star.linguistic2.XGrammarChecker എന്ന ഇന്റർഫേസ് നടപ്പിലാക്കുന്ന ഒരു ഘടകമാണ് ഗ്രാമർ ചെക്കർ. ഓരോ ഭാഷയ്ക്കും ഈ ഭാഷയിലെ വ്യാകരണ പിശകുകൾ പരിശോധിക്കാൻ കഴിയുന്ന ഒരു പ്രത്യേക ഘടകം ഉണ്ടായിരിക്കാം. ഏത് ഭാഷയ്ക്ക് ഏത് ഘടകമാണ് ഉത്തരവാദിയെന്ന് കോൺഫിഗറേഷൻ പറയും. ഒരു പ്രത്യേക ഘടകത്തെ പ്രതിനിധീകരിക്കുന്ന com.sun.star.linguistic2.XGrammarChecker നടപ്പിലാക്കുന്നത് ഈ വ്യാകരണ പരിശോധന ഘടകത്തിന്റെ "സ്വകാര്യ" API യെ ഉൾക്കൊള്ളിക്കും. ഈ സ്വകാര്യ API, UNO അധിഷ്ഠിതമോ ശുദ്ധമായ ജാവയോ, ഒരു CLI അല്ലെങ്കിൽ COM ഇന്റർഫേസ്, ഒരു C API മുതലായവയും, ഒരു UNO ഇന്റർഫേസിന്റെ ഒരു നിർവ്വഹണത്തിനുള്ളിൽ ഉപയോഗിക്കാവുന്നതോ ബ്രിഡ്ജ് ചെയ്യുന്നതോ ആയ എല്ലാം. ഇന്റർഫേസ് വളരെ ചെറുതായതിനാൽ, OpenOffice.org-ൽ അവ ഉപയോഗിക്കുന്നതിന് നിലവിലുള്ള വ്യാകരണ ചെക്കറുകൾ പൊതിയുന്നത് വളരെ സങ്കീർണ്ണമായിരിക്കില്ല.
മധ്യഭാഗത്ത് മൂന്നാമത്തെ ഘടകം സ്ഥിതിചെയ്യുന്നു, അത് മറ്റ് രണ്ടിനും ഇടയിൽ മധ്യസ്ഥത വഹിക്കുന്നു. ഇത് വ്യാകരണ പരിശോധന പ്രക്രിയയുടെ "യുക്തി" നടപ്പിലാക്കുന്നു. ഇത് മറ്റ് രണ്ട് ഭാഗങ്ങളുമായി അവരുടെ നിർവചിച്ച UNO API ഉപയോഗിച്ച് സംസാരിക്കുമ്പോൾ, ഈ മധ്യഭാഗം മാത്രം പ്രത്യേക ഡോക്യുമെന്റ് തരത്തിൽ നിന്നോ വ്യാകരണ പരിശോധന ഘടകത്തിൽ നിന്നോ സ്വതന്ത്രമാണ്. com.sun.star.linguistic2.GrammarCheckingIterator എന്ന് വിളിക്കപ്പെടുന്ന ഒരു UNO സേവനം പിന്തുണയ്ക്കുന്ന എല്ലാ സാഹചര്യങ്ങൾക്കും വ്യാകരണ പരിശോധന പ്രക്രിയ നടത്തുന്ന ഘടകമാണ്. പ്രവർത്തിക്കുന്ന എല്ലാ വ്യാകരണ പരിശോധന പ്രക്രിയകളെയും നിയന്ത്രിക്കുന്ന ഒരു സിംഗിൾടൺ ആണ് ഇത്, അതിനാൽ നിലവിലുള്ള എല്ലാ വ്യാകരണ പരിശോധന ഘടകങ്ങളും അറിയാം. ഇത് com.sun.star.linguistic2.XGrammarCheckingIterator എന്ന ഇന്റർഫേസ് നടപ്പിലാക്കുന്നു കൂടാതെ com.sun.star.linguistic2.XGrammarCheckingResultListener നടപ്പിലാക്കുന്ന ഒരു ഒബ്ജക്റ്റും നൽകുന്നു. ഇനിപ്പറയുന്നതിൽ ഈ വസ്തുവിനെ GCIterator എന്ന് വിളിക്കും.