blob: 7ce89423304429650ad3d7667a2c509579e907ff [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!---
* @exampleText The following TextEditor MXML demonstrates how to use Squiggly API to check the block based text.
* Note that the results from this example may differ based on dictionary file.
*
* The following steps are taken:
* <ol>
* <li>A <code>SpellingDictionary</code> object is created </li>
* <li>A <code>SpellChecker</code> object is created </li>
* <li>In the mx:application tag, add a function call to <code>init</code> for <code>applicationComplete</code> </li>
* <li>Create <code>init</code> function body: in the body, add an event listener for <code>SpellingDictionary</code> object.
* Then create a <code>URLRequest</code> object to specify the url of dictionary file. Then call the <code>SpellingDictionary</code>
* object <code>load</code> method to load the dictionary from disk or remote URL.</li>
* <li> Finish the <code>handleLoadComplete</code> function to attach the <code>SpellingDictionary</code> object to a <code>SpellChecker</code> object</li>
* <li> Use the regular expression to break the block text to word string. </li>
* <li> Add a function to call the <code>CheckWord</code> method of <code>SpellChecker</code> object to verify the correctness of a word. </li>
* <li> Use the <code>TextRange</code> to mark the mispelled word found by the last step. </li>
* <li>Add related MXML component tag and related property. </li>
* </ol>
*
* Note: to make this example work properly, please make sure you have the proper dictionary file in the specified folder
* and put the Squiggly library(AdobeSpellingEngine.swc) in your libs folder. Please see the reference "How to generate Squiggly dictionary".
-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" applicationComplete="init()" horizontalAlign="left">
<mx:Script>
<![CDATA[
import com.adobe.linguistics.spelling.*;
import mx.controls.textClasses.TextRange;
private var _newdict:HunspellDictionary = new HunspellDictionary();
private var sp:SpellChecker;
private function init():void {
_newdict.addEventListener(Event.COMPLETE, handleLoadComplete);
_newdict.load("dictionaries/en_US/en_US.aff", "dictionaries/en_US/en_US.dic");
}
private function handleLoadComplete(evt:Event):void
{
sp = new SpellChecker(_newdict);
}
private function checkText():void {
var wordPattern:RegExp =/\b\w+\b/; // match next word...
var inputValue:String = inputText.text;
var offset:int, curPos:int;
for ( ; ; ) {
var res:Array = inputValue.match( wordPattern); // lookup word by word....
if ( res == null ) break;
if ( !sp.checkWord(res[0]) ) {
offset = inputText.text.length-inputValue.length;
curPos = inputValue.indexOf(res[0]);
var currentRange:TextRange = new TextRange(inputText, false, offset+ curPos, offset+ curPos+res[0].length); // mark mispelled word.
currentRange.color = "red";
}
inputValue = inputValue.substr(inputValue.indexOf(res[0])+ res[0].length);
}
}
]]>
</mx:Script>
<mx:HBox>
<mx:Button id="check" label="Check Text" click="checkText()" />
</mx:HBox>
<mx:TextArea id="inputText" height="100%" width="100%"/>
</mx:Application>