Ad

EngelsFransSpaans

Gratis editor online | DOC > | XLS > | PPT >


OffiDocs-favicon

Taalcomponent Grammaticacontrole

OffiDocs biedt OpenOffice online aan, dus we zijn geïnteresseerd in de Lingucomponent Grammaticacontrole waarvan het doel is om een ​​grammaticacontrole voor Engels en andere ondersteunde talen te ontwerpen, ontwikkelen en implementeren. Een API voor grammaticacontrole is beschikbaar in OpenOffice.org sinds versie 3.0.

Grammaticacontrole wordt gezien als een specifieke implementatie van een tekstiteratie- en opmaakproces. Andere iteratie-/opmaakprocessen zoals spellingcontrole of slim taggen kunnen in principe op dezelfde manier werken (hoewel ze momenteel niet op deze manier zijn geïmplementeerd). Als grammaticacontrole in de volgende documentatie wordt genoemd, kan dit worden gezien als een tijdelijke aanduiding voor de meer algemene taak van tekstopmaak. Aangezien de objecten die de tekstiteratie uitvoeren zich bewust zijn van het specifieke opmaakproces waarvoor ze worden gebruikt, is het in principe mogelijk om de iteratie nauwkeurig af te stemmen op de behoeften van dat proces.

Het grammaticacontroleproces bestaat uit

- één of meerdere te controleren documenten

- een of meer implementaties van grammaticacontrole, die elk ten minste één taal ondersteunen.

- een of meer dialoogvensters voor grammaticacontrole (maximaal één instantie per document)

- één contextmenu wanneer u op als onjuist gemarkeerde tekst klikt

- een globale iterator voor grammaticacontrole (gemeenschappelijk voor alle documenten) geïmplementeerd als singleton, die één zin (van een willekeurig document) per keer controleert.

- één thread-object per grammaticacontrole dat wordt gebruikt om de controle uit te voeren zonder de GUI te blokkeren

- objecten die door de tekst van een document itereren, waarbij één object een enkele grammaticacontroletaak vertegenwoordigt die werd aangevraagd

- objecten die tekstblokken in een tekstdocument vertegenwoordigen ("platte alinea's") die abstraheren van de concrete structuur van het document en toegang geven tot de tekst door middel van eenvoudige tekststrings en integerwaarden die posities en lengtes van substrings beschrijven.

 

Objecten en hun interfaces

We hebben drie delen die samenwerken. Het eerste deel is afkomstig van het document dat wordt gecontroleerd en het is een implementatie die specifiek is voor het specifieke type document (bijv. Writer of Calc). Het omvat de toegang tot de tekst van het document. Een document dat gecontroleerd wil worden op grammaticafouten moet de interface com.sun.star.text.XFlatParagraphIteratorProvider ondersteunen. Via deze interface moet het objecten kunnen leveren die com.sun.star.text.XFlatParagraphIterator implementeren die zelf objecten retourneren die com.sun.star.text.XFlatParagraph implementeren. De laatste interface is afgeleid van com.sun.star.text.XTextMarkup. In het volgende zullen we deze objecten "platte alinea iterators" (FPIterator) en "platte alinea's" (FP) noemen. Als het woord "paragraaf" wordt gebruikt, duidt dit ook op een "FP", niet op een echte alinea in het document, aangezien beide niet altijd hetzelfde zijn.

Een FP is niet noodzakelijkerwijs een paragraaf zoals in de context van het document, het kan een verzameling ervan zijn (bijvoorbeeld een lijst) en het bevat niet alleen de doorlopende tekst maar ook andere tekstinhoud zoals tekstkaders, kop- en voetteksten enz. Aangezien alleen de documentkern kan dergelijke FP-objecten efficiënt verwerken. Dit is een documentspecifieke implementatie. De FP onthult niet de volledige interne tekststructuur of zijn attributen, de inhoud ervan is alleen toegankelijk als een string die het volledige tekstblok bevat.

Een FPIterator is een object dat het mogelijk maakt om door alle FP-objecten te bladeren die samen de tekstinhoud van het document vormen. De volgorde waarin de alinea's worden herhaald, is willekeurig en een implementatiedetail van de FPIterator. De "normale" tekstinhoud moet normaal gesproken in leesrichting worden aangeboden, maar hoe andere tekst, zoals kop- en voetteksten (die maar één keer bestaan ​​maar op elke pagina worden herhaald) of tekstkaders (die in de doorlopende tekst kunnen zijn ingesloten) erin passen, is niet vooraf bepaald. Itereren door tekst wordt altijd toegewezen aan een tekstopmaakproces dat het hele document behandelt. De iteratie loopt dus door aan het einde van het document en zal niet eindigen voordat alle alinea's zijn gemarkeerd als "gecontroleerd" voor het specifieke opmaakproces (zoals grammaticacontrole). Alinea's gemarkeerd als "gecontroleerd" worden overgeslagen in de iteratie. Dus voor klanten van een FPIterator is het eenvoudig om ze te gebruiken: vraag het om nieuwe FP-objecten totdat er geen wordt geretourneerd en geef er niet om hoe het wordt geïmplementeerd.

Het tweede deel is een grammaticacontrole. Een grammaticacontrole is een component die de interface com.sun.star.linguistic2.XGrammarChecker implementeert. Voor elke taal kan er een bepaald onderdeel zijn dat in staat is om te controleren op grammaticafouten in deze taal. De configuratie zal vertellen welk onderdeel verantwoordelijk is voor welke taal. De implementatie van com.sun.star.linguistic2.XGrammarChecker die een bepaald onderdeel vertegenwoordigt, omvat de "privé" API van dit onderdeel voor grammaticacontrole. Deze privé-API kan op UNO gebaseerd zijn of pure Java, een CLI- of COM-interface, een C API enz., alles wat kan worden gebruikt of overbrugd binnen een implementatie van een UNO-interface. Aangezien de interface vrij klein is, zou het niet erg ingewikkeld moeten zijn om bestaande grammaticacontroles in te pakken voor gebruik in OpenOffice.org.

In het midden ligt de derde component, die bemiddelt tussen de andere twee. Het implementeert de "logica" van het grammaticacontroleproces. Omdat het met de andere twee delen praat door hun gedefinieerde UNO API, is alleen dit middelste deel onafhankelijk van het specifieke documenttype of de grammaticacontrolecomponent. Een UNO-service genaamd com.sun.star.linguistic2.GrammarCheckingIterator is het onderdeel dat daadwerkelijk het grammaticacontroleproces uitvoert voor alle ondersteunde scenario's. Het is een singleton die alle lopende grammaticacontroleprocessen bestuurt en dus ook alle bestaande grammaticacontrolecomponenten kent. Het implementeert de interface com.sun.star.linguistic2.XGrammarCheckingIterator en biedt ook een object dat com.sun.star.linguistic2.XGrammarCheckingResultListener implementeert. In het volgende wordt dit object de GCIterator genoemd.


lopen Chrome Extensions

Ad