blob: 30b629dc1059c4734df8b19d9ee57b36057daff6 [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.
-->
<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>