| <?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> |