1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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;
- });
|