69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
|
//>>built
|
||
|
define("dojox/editor/plugins/_SpellCheckParser", [
|
||
|
"dojo",
|
||
|
"dojox",
|
||
|
"dojo/_base/connect",
|
||
|
"dojo/_base/declare"
|
||
|
], function(dojo, dojox) {
|
||
|
|
||
|
dojo.declare("dojox.editor.plugins._SpellCheckParser", null, {
|
||
|
lang: "english",
|
||
|
|
||
|
parseIntoWords: function(/*String*/ text){
|
||
|
// summary:
|
||
|
// Parse the text into words
|
||
|
// text:
|
||
|
// Plain text without html tags
|
||
|
// tags:
|
||
|
// public
|
||
|
// returns:
|
||
|
// Array holding all the words
|
||
|
function isCharExt(c){
|
||
|
var ch = c.charCodeAt(0);
|
||
|
return 48 <= ch && ch <= 57 || 65 <= ch && ch <= 90 || 97 <= ch && ch <= 122;
|
||
|
}
|
||
|
var words = this.words = [],
|
||
|
indices = this.indices = [],
|
||
|
index = 0,
|
||
|
length = text && text.length,
|
||
|
start = 0;
|
||
|
|
||
|
while(index < length){
|
||
|
var ch;
|
||
|
// Skip the white charactor and need to treat HTML entity respectively
|
||
|
while(index < length && !isCharExt(ch = text.charAt(index)) && ch != "&"){ index++; }
|
||
|
if(ch == "&"){ // An HTML entity, skip it
|
||
|
while(++index < length && (ch = text.charAt(index)) != ";" && isCharExt(ch)){}
|
||
|
}else{ // A word
|
||
|
start = index;
|
||
|
while(++index < length && isCharExt(text.charAt(index))){}
|
||
|
if(start < length){
|
||
|
words.push(text.substring(start, index));
|
||
|
indices.push(start);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return words;
|
||
|
},
|
||
|
|
||
|
getIndices: function(){
|
||
|
// summary:
|
||
|
// Get the indices of the words. They are in one-to-one correspondence
|
||
|
// tags:
|
||
|
// public
|
||
|
// returns:
|
||
|
// Index array
|
||
|
return this.indices;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// Register this parser in the SpellCheck plugin.
|
||
|
dojo.subscribe(dijit._scopeName + ".Editor.plugin.SpellCheck.getParser", null, function(sp){
|
||
|
if(sp.parser){ return; }
|
||
|
sp.parser = new dojox.editor.plugins._SpellCheckParser();
|
||
|
});
|
||
|
|
||
|
return dojox.editor.plugins._SpellCheckParser;
|
||
|
|
||
|
});
|