| <?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. |
| |
| --> |
| <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:SpellingDictionary = new SpellingDictionary(); |
| private var sp:SpellChecker= new SpellChecker(); |
| private function init():void { |
| _newdict.addEventListener(Event.COMPLETE, handleLoadComplete); |
| var myUrl:URLRequest = new URLRequest("usa.zwl"); |
| _newdict.load(myUrl); |
| } |
| private function handleLoadComplete(evt:Event):void |
| { |
| sp.addDictionary(_newdict); |
| } |
| |
| private function checkText():void { |
| var wordPattern:RegExp =/\b\w+\b/; // match next word... |
| var inputValue:String = inputText.text; |
| var rangeArray:Array = new Array(); |
| var wordArray:Array = new Array(); |
| var offset:int, curPos:int; |
| for ( ; ; ) { |
| var res:Array = inputValue.match( wordPattern); // lookup word by word.... |
| if ( res == null ) break; |
| 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. |
| wordArray.push( res[0] ); |
| rangeArray.push( currentRange ); |
| inputValue = inputValue.substr(inputValue.indexOf(res[0])+ res[0].length); |
| } |
| var nStart:Number; |
| var nMillisElapsed:Number; |
| var totalMispelled:int = 0; |
| nStart = new Date().time; |
| for ( var i:int=0; i< wordArray.length ; i++ ) { |
| if ( !sp.checkWord( wordArray[i] ) ) { |
| totalMispelled++; |
| } |
| } |
| nMillisElapsed = new Date().time - nStart; |
| outputText.text = "Total "+ wordArray.length + " Words.\n" + |
| "Total " + totalMispelled + " Mispelled Words.\n" + |
| "Mispell Rate:" + (totalMispelled/wordArray.length) + ".\n" + |
| "Total time(ms):" + nMillisElapsed + "ms.\n" + |
| "Performance Result:" + (wordArray.length/nMillisElapsed)*1000 + " words per second.\n"; |
| for ( i=0; i< wordArray.length ; i++ ) { |
| if ( !sp.checkWord( wordArray[i] ) ) { |
| rangeArray[i].color = "red"; |
| } |
| } |
| |
| } |
| |
| ]]> |
| </mx:Script> |
| <mx:HBox> |
| <mx:Button id="check" label="Check Text" click="checkText()" /> |
| </mx:HBox> |
| <mx:TextArea id="inputText" height="100%" width="100%"/> |
| <mx:TextArea id="outputText" height="10%" width="50%" editable="false" backgroundColor="0xffcc00"/> |
| </mx:Application> |