Ad

Angielskifrancuskihiszpański

Darmowy edytor online | DOC > | XLS > | PPT >


Ulubiona usługa OffiDocs

Sprawdzanie gramatyki Lingucomponent

OffiDocs udostępnia OpenOffice online, więc jesteśmy zainteresowani sprawdzaniem gramatyki Lingucomponent, którego celem jest zaprojektowanie, opracowanie i wdrożenie modułu sprawdzania gramatyki dla języka angielskiego i innych obsługiwanych języków. API do sprawdzania gramatyki jest dostępne w OpenOffice.org od wersji 3.0.

Sprawdzanie gramatyki jest postrzegane jako szczególna implementacja procesu iteracji tekstu i znaczników, inne procesy iteracji/znaczników, takie jak sprawdzanie pisowni lub inteligentne tagowanie, zasadniczo mogą działać w ten sam sposób (chociaż obecnie nie są one zaimplementowane w ten sposób). Jeśli w poniższej dokumentacji jest mowa o sprawdzaniu gramatyki, można to traktować jako symbol zastępczy dla bardziej ogólnego zadania oznaczania tekstu. Ponieważ obiekty przeprowadzające iterację tekstu są świadome konkretnego procesu znaczników, do którego są używane, w zasadzie możliwe jest dostrojenie iteracji do potrzeb tego procesu.

Proces sprawdzania gramatyki składa się z

- jeden lub więcej dokumentów do sprawdzenia

- jedna lub więcej implementacji sprawdzania gramatyki, z których każda obsługuje co najmniej jeden język.

- jedno lub więcej okien dialogowych sprawdzania gramatyki (maksymalnie jedno wystąpienie na dokument)

- jedno menu kontekstowe po kliknięciu na tekst oznaczony jako błędny

- globalny iterator sprawdzający gramatykę (wspólny dla wszystkich dokumentów) zaimplementowany jako singleton, sprawdzający jednorazowo jedno zdanie (dowolnego dokumentu).

- jeden obiekt wątku na moduł sprawdzania gramatyki, który służy do sprawdzania bez blokowania GUI

- obiekty iterujące po tekście dokumentu, jeden obiekt reprezentujący pojedyncze zadanie sprawdzania gramatyki, o które poproszono

- obiekty reprezentujące bloki tekstu w dokumencie tekstowym („płaskie akapity”), które abstrahują od konkretnej struktury dokumentu i zapewniają dostęp do tekstu za pomocą prostych ciągów tekstowych i wartości całkowitych opisujących pozycje i długości podłańcuchów.

 

Obiekty i ich interfejsy

Mamy trzy części współpracujące ze sobą. Pierwsza część pochodzi z sprawdzanego dokumentu i jest to implementacja specyficzna dla danego typu dokumentu (np. Writer lub Calc). Zawiera dostęp do tekstu dokumentu. Dokument, który ma zostać sprawdzony pod kątem błędów gramatycznych, musi obsługiwać interfejs com.sun.star.text.XFlatParagraphIteratorProvider. Poprzez ten interfejs musi być w stanie zapewnić obiekty implementujące com.sun.star.text.XFlatParagraphIterator, które same zwracają obiekty implementujące com.sun.star.text.XFlatParagraph. Ten ostatni interfejs wywodzi się z com.sun.star.text.XTextMarkup. W dalszej części będziemy nazywać te obiekty „płaskimi iteratorami akapitów” (FPIterator) i „płaskimi akapitami” (FP). Jeśli zostanie użyte słowo „akapit”, oznacza to również „PR”, a nie prawdziwy akapit w dokumencie, ponieważ nie zawsze oba są takie same.

PR niekoniecznie jest akapitem, jak w kontekście dokumentów, może być ich zbiorem (np. listą) i zawiera nie tylko tekst przepływowy, ale także inne treści tekstowe, takie jak ramki tekstowe, nagłówki i stopki itp. document core może wydajnie obsługiwać takie obiekty obiektów FP, jest to implementacja specyficzna dla dokumentu. PR nie ujawnia pełnej wewnętrznej struktury tekstu ani jego atrybutów, jego treść jest dostępna tylko jako ciąg znaków zawierający pełny blok tekstu.

FPIterator to obiekt, który umożliwia iterację po wszystkich obiektach FP, które razem tworzą treść tekstową dokumentu. Kolejność powtarzania akapitów jest dowolna i jest szczegółem implementacji FPIteratora. „Zwykła” treść tekstu zwykle powinna być podawana zgodnie z kierunkiem czytania, ale dopasowanie innego tekstu, takiego jak nagłówki i stopki (które istnieją tylko raz, ale są powtarzane na każdej stronie) lub ramki tekstowe (które mogą być osadzone w tekście przepływowym), jest nie z góry ustalone. Iteracja po tekście jest zawsze przypisana do procesu oznaczania tekstu, który traktuje cały dokument. W ten sposób iteracja zakończy się na końcu dokumentu i nie zakończy się, zanim wszystkie akapity nie zostaną oznaczone jako „sprawdzone” dla określonego procesu oznaczania (jak sprawdzanie gramatyki). Akapity oznaczone jako „zaznaczone” zostaną pominięte w iteracji. Tak więc dla klientów FPIteratora korzystanie z nich jest proste: proś o nowe obiekty FP, dopóki żaden nie zostanie zwrócony i nie przejmuj się tym, jak jest zaimplementowany.

Druga część to sprawdzanie gramatyki. Moduł sprawdzania gramatyki to komponent implementujący interfejs com.sun.star.linguistic2.XGrammarChecker. Dla każdego języka może istnieć określony komponent, który jest w stanie sprawdzić błędy gramatyczne w tym języku. Konfiguracja powie, który komponent jest odpowiedzialny za jaki język. Implementacja com.sun.star.linguistic2.XGrammarChecker reprezentująca określony komponent będzie hermetyzować „prywatny” interfejs API tego komponentu do sprawdzania gramatyki. Ten prywatny interfejs API może być oparty na UNO lub czystej Javie, interfejs CLI lub COM, interfejs API C itp., wszystko, czego można użyć lub połączyć z implementacją interfejsu UNO. Ponieważ interfejs jest dość mały, umieszczenie istniejących programów do sprawdzania gramatyki w celu użycia ich w OpenOffice.org nie powinno być zbyt skomplikowane.

Pośrodku leży trzeci składnik, który pośredniczy między dwoma pozostałymi. Implementuje „logikę” procesu sprawdzania gramatyki. Ponieważ komunikuje się z pozostałymi dwiema częściami za pomocą ich zdefiniowanego API UNO, tylko ta środkowa część jest niezależna od określonego typu dokumentu lub komponentu sprawdzającego gramatykę. Usługa UNO o nazwie com.sun.star.linguistic2.GrammarCheckingIterator to komponent, który faktycznie przeprowadza proces sprawdzania gramatyki dla wszystkich obsługiwanych scenariuszy. Jest to singleton, który kontroluje wszystkie uruchomione procesy sprawdzania gramatyki, a tym samym zna również wszystkie istniejące komponenty sprawdzania gramatyki. Implementuje interfejs com.sun.star.linguistic2.XGrammarCheckingIterator, a także udostępnia obiekt implementujący com.sun.star.linguistic2.XGrammarCheckingResultListener. W dalszej części ten obiekt będzie nazywany GCIterator.


run Chrome Extensions

Ad