Ad

IngleseFranceseSpagnolo

Editore gratuito in linea | DOC > | XLS > | PPT >


Favicon di OffiDocs

Lingucomponent Controllo grammaticale

OffiDocs fornisce OpenOffice online, quindi siamo interessati al Lingucomponent Grammar Checking i cui obiettivi sono progettare, sviluppare e implementare un correttore grammaticale per l'inglese e altre lingue supportate. Un'API di controllo grammaticale è disponibile in OpenOffice.org dalla versione 3.0.

Il controllo grammaticale è visto come una particolare implementazione di un processo di iterazione e markup del testo, altri processi di iterazione/markup come il controllo ortografico o lo smart tagging possono funzionare sostanzialmente allo stesso modo (sebbene attualmente non siano implementati in questo modo). Se il controllo grammaticale è menzionato nella seguente documentazione, questo può essere visto come un segnaposto per l'attività più generale del markup del testo. Poiché gli oggetti che eseguono l'iterazione del testo sono consapevoli del particolare processo di markup per cui vengono utilizzati, è sostanzialmente possibile ottimizzare l'iterazione per le esigenze di tale processo.

Il processo di controllo grammaticale consiste in

- uno o più documenti da verificare

- una o più implementazioni del correttore grammaticale, ognuna delle quali supporta almeno una lingua.

- una o più finestre di dialogo di controllo grammaticale (al massimo un'istanza per documento)

- un menu contestuale quando si fa clic sul testo contrassegnato come errato

- un iteratore di controllo grammaticale globale (comune a tutti i documenti) implementato come singleton, che controlla una frase (di un documento arbitrario) alla volta.

- un oggetto thread per correttore grammaticale utilizzato per eseguire il controllo senza bloccare la GUI

- oggetti che ripetono il testo di un documento, un oggetto che rappresenta una singola attività di controllo grammaticale richiesta

- oggetti che rappresentano blocchi di testo in un documento di testo (“paragrafi piatti”) che astraggono dalla struttura concreta del documento e forniscono l'accesso al testo mediante semplici stringhe di testo e valori interi che descrivono posizioni e lunghezze della sottostringa.

 

Oggetti e loro interfacce

Abbiamo tre parti che lavorano insieme. La prima parte deriva dal documento che si sta verificando ed è un'implementazione specifica per il particolare tipo di documento (es. Writer o Calc). Incapsula l'accesso al testo del documento. Un documento che desidera essere controllato per errori grammaticali deve supportare l'interfaccia com.sun.star.text.XFlatParagraphIteratorProvider. Attraverso questa interfaccia deve essere in grado di fornire oggetti che implementano com.sun.star.text.XFlatParagraphIterator che a loro volta restituiscono oggetti che implementano com.sun.star.text.XFlatParagraph. Quest'ultima interfaccia è derivata da com.sun.star.text.XTextMarkup. Nel seguito chiameremo questi oggetti "iteratori di paragrafi piatti" (FPIterator) e "paragrafi piatti" (FP). Se viene utilizzata la parola "paragrafo", questa denoterà anche un "FP", non un vero e proprio paragrafo nel documento poiché non sempre entrambi sono uguali.

Un FP non è necessariamente un paragrafo come nel contesto dei documenti, può essere una raccolta di essi (ad esempio un elenco) e non contiene solo il testo di flusso ma anche altri contenuti di testo come cornici di testo, intestazioni e piè di pagina ecc. Poiché solo il document core può gestire tali oggetti oggetti FP in modo efficiente questa è un'implementazione specifica del documento. Il FP non rivela la struttura interna completa del testo oi suoi attributi, il suo contenuto è accessibile solo come una stringa contenente il blocco di testo completo.

Un FPIterator è un oggetto che permette di iterare attraverso tutti gli oggetti FP che insieme compongono il contenuto testuale del documento. L'ordine in cui i paragrafi vengono iterati è arbitrario ed è un dettaglio di implementazione dell'FPIterator. Il contenuto di testo "normale" di solito dovrebbe essere fornito nella direzione di lettura, ma come si adattano altri testi come intestazioni e piè di pagina (che esistono solo una volta ma si ripetono su ogni pagina) o cornici di testo (che possono essere incorporate nel flusso di testo) è non predeterminato. L'iterazione attraverso il testo è sempre assegnata a un processo di marcatura del testo che tratterà l'intero documento. Pertanto l'iterazione si concluderà alla fine del documento e non terminerà prima che tutti i paragrafi siano stati contrassegnati come "controllati" per il particolare processo di markup (come il controllo grammaticale). I paragrafi contrassegnati come "controllati" verranno saltati nell'iterazione. Quindi per i clienti di un FPIterator è semplice usarli: chiedigli nuovi oggetti FP fino a quando non ne viene restituito nessuno e non preoccuparti di come viene implementato.

La seconda parte è un correttore grammaticale. Un correttore grammaticale è un componente che implementa l'interfaccia com.sun.star.linguistic2.XGrammarChecker. Per ogni lingua potrebbe esserci un particolare componente in grado di verificare la presenza di errori grammaticali in questa lingua. La configurazione dirà quale componente è responsabile di quale lingua. L'implementazione di com.sun.star.linguistic2.XGrammarChecker che rappresenta un particolare componente incapsulerà l'API "privata" di questo componente di controllo grammaticale. Questa API privata può essere basata su UNO o Java puro, un'interfaccia CLI o COM, un'API C ecc., tutto ciò che può essere utilizzato o collegato all'interno di un'implementazione di un'interfaccia UNO. Dato che l'interfaccia è piuttosto piccola, non dovrebbe essere molto complicato avvolgere i correttori grammaticali esistenti per utilizzarli in OpenOffice.org.

Nel mezzo si trova il terzo componente, che media tra gli altri due. Implementa la "logica" del processo di controllo grammaticale. Poiché comunica con le altre due parti tramite la loro API UNO definita, solo questa parte centrale è indipendente dal particolare tipo di documento o dal componente di controllo grammaticale. Un servizio UNO denominato com.sun.star.linguistic2.GrammarCheckingIterator è il componente che esegue effettivamente il processo di controllo grammaticale per tutti gli scenari supportati. È un singleton che controlla tutti i processi di controllo grammaticale in esecuzione e quindi conosce anche tutti i componenti di controllo grammaticale esistenti. Implementa l'interfaccia com.sun.star.linguistic2.XGrammarCheckingIterator e fornisce anche un oggetto che implementa com.sun.star.linguistic2.XGrammarCheckingResultListener. Nel seguito questo oggetto verrà chiamato GCIterator.


Correre Chrome Extensions

Ad