You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2005/10/21 23:46:28 UTC
svn commit: r327589 [65/72] - in /incubator/roller/branches/roller_1.x: ./
contrib/ contrib/lib/ contrib/plugins/ contrib/plugins/src/
contrib/plugins/src/org/ contrib/plugins/src/org/roller/
contrib/plugins/src/org/roller/presentation/ contrib/plugins...
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Element.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Element.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Element.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Element.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,101 @@
+/*
+ * Element.js
+ * An element node in an XML document
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+Element.prototype = new Node();
+Element.prototype.constructor = Element;
+ // Element : Node
+
+function Element( ownerDoc, name ) {
+ this.tagName = name;
+
+ // inherited from Node
+ this.attributes = new NamedNodeMap();
+ this.childNodes = new NodeList();
+ this.nodeType = Node.ELEMENT_NODE;
+ this.nodeName = name;
+ this.ownerDocument = ownerDoc;
+}
+
+Element.prototype.getAttribute =
+function( name ) {
+ var attr = this.attributes.getNamedItem( name );
+ return ( attr == null ) ? "" : attr.getValue();
+}
+
+Element.prototype.getAttributeNode =
+function( name ) {
+ return this.attributes.getNamedItem( name );
+}
+
+Element.prototype.getElementsByTagName =
+function( tagName ) {
+ return new DeepNodeList( this, tagName );
+}
+
+Element.prototype.getTagName =
+function() {
+ return this.tagName;
+}
+
+Element.prototype.normalize =
+function() {
+ var child, next;
+ for ( child = this.getFirstChild(); child != null; child = next ) {
+ next = child.getNextSibling();
+ if ( child.getNodeType() == Node.TEXT_NODE ) {
+ if ( next != null && next.getNodeType() == Node.TEXT_NODE ) {
+ child.appendData( next.getNodeValue() );
+ this.removeChild( next );
+ next = child;
+ }
+ else {
+ if ( child.getNodeValue().length == 0 ) {
+ this.removeChild( child );
+ }
+ }
+ }
+ else if ( child.getNodeType() == Node.ELEMENT_NODE ) {
+ child.normalize();
+ }
+ }
+}
+
+Element.prototype.removeAttribute =
+function( name ) {
+ this.attributes.removeNamedItem( name );
+}
+
+Element.prototype.removeAttributeNode =
+function( attr ) {
+ return this.attributes.removeNamedItem( attr.nodeName );
+}
+
+Element.prototype.setAttribute =
+function( name, value ) {
+ var attr = this.ownerDocument.createAttribute( name );
+ arrt.setValue( value );
+ this.attributes.setNamedItem( attr );
+}
+
+Element.prototype.setAttributeNode =
+function( attr ) {
+ return this.attributes.setNamedItem( attr );
+}
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/EntityReference.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/EntityReference.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/EntityReference.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/EntityReference.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,32 @@
+/*
+ * EntityReference.js
+ * An entity reference node in a DTD of an XML document
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+EntityReference.prototype = new Node();
+EntityReference.prototype.constructor = EntityReference;
+ // EntityReference : Node
+
+function EntityReference( ownerDoc, name ) {
+
+ // inherited from Node
+ this.nodeName = name;
+ this.nodeType = Node.ENTITY_REFERENCE_NODE;
+ this.ownerDocument = ownerDoc;
+}
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/NamedNodeMap.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/NamedNodeMap.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/NamedNodeMap.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/NamedNodeMap.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,74 @@
+/*
+ * NamedNodeMap.js
+ * A collection of nodes accessible by name in an XML document
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+function NamedNodeMap() {
+ this.length = 0;
+}
+
+NamedNodeMap.prototype.getLength =
+function() {
+ return this.length;
+}
+
+NamedNodeMap.prototype.getNamedItem =
+function( name ) {
+ return ( this[ name ] || null );
+}
+
+NamedNodeMap.prototype.item =
+function( index ) {
+ var item;
+ item = ( index < 0 ) ? this[ this.length + index ]
+ : this[ index ];
+ return ( item || null );
+}
+
+NamedNodeMap.prototype.removeNamedItem =
+function( name ) {
+ var removed = this[ name ];
+
+ if ( !removed ) {
+ return null;
+ }
+
+ delete this[ name ];
+ for ( var i = 0; i < this.length - 1; i++ ) {
+ if ( !this[i] ) {
+ this[i] = this[ i + 1 ];
+ delete this[ i + 1 ];
+ }
+ }
+ this.length--;
+ return removed;
+}
+
+NamedNodeMap.prototype.setNamedItem =
+function( node ) {
+ var nodeName = node.getNodeName();
+ var item = this.getNamedItem( nodeName );
+ this[ nodeName ] = node;
+
+ if ( item == null ) {
+ this[ this.length++ ] = node;
+ }
+
+ return item;
+}
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Node.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Node.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Node.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Node.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,152 @@
+/*
+ * Attr.js
+ * An attribute node in an XML document
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+Node.ELEMENT_NODE = 1;
+Node.ATTRIBUTE_NODE = 2;
+Node.TEXT_NODE = 3;
+Node.CDATA_SECTION_NODE = 4;
+Node.ENTITY_REFERENCE_NODE = 5;
+Node.ENTITY_NODE = 6; // not used
+Node.PROCESSING_INSTRUCTION_NODE = 7;
+Node.COMMENT_NODE = 8;
+Node.DOCUMENT_NODE = 9;
+Node.DOCUMENT_TYPE_NODE = 10;
+Node.DOCUMENT_FRAGMENT_NODE = 11;
+Node.NOTATION_NODE = 12; // not used
+
+function Node() {
+ this.attributes = null;
+ this.childNodes = new NodeList();
+ this.firstChild = null
+ this.lastChild = null;
+ this.nextSibling = null;
+ this.nodeName = null;
+ this.nodeType = null;
+ this.nodeValue = null;
+ this.ownerDocument = null;
+ this.parentNode = null;
+ this.previousSibling = null;
+}
+
+Node.prototype.getAttributes = function() { return this.attributes; }
+Node.prototype.getChildNodes = function() { return this.childNodes; }
+Node.prototype.getFirstChild = function() { return this.firstChild; }
+Node.prototype.getLastChild = function() { return this.lastChild; }
+Node.prototype.getNextSibling = function() { return this.nextSibling; }
+Node.prototype.getNodeName = function() { return this.nodeName; }
+Node.prototype.getNodeType = function() { return this.nodeType; }
+Node.prototype.getNodeValue = function() { return this.nodeValue; }
+Node.prototype.getOwnerDocument = function() { return this.ownerDocument; }
+Node.prototype.getParentNode = function() { return this.parentNode; }
+Node.prototype.getPreviousSibling = function() { return this.previousSibling; }
+
+Node.prototype.setNodeValue =
+function() {
+ // Default behavior is to do nothing;
+ // overridden in some subclasses
+}
+
+Node.prototype.appendChild =
+function( childNode ) {
+ if ( this.nodeType == Node.ELEMENT_NODE ||
+ this.nodeType == Node.ATTRIBUTE_NODE ||
+ this.nodeType == Node.DOCUMENT_NODE ||
+ this.nodeType == Node.DOCUMENT_FRAGMENT_NODE ) {
+ this.childNodes.add( childNode );
+ }
+ else {
+ // :REVISIT: change to DOMException
+ throw new ParseError( "Cannot append child node" );
+ }
+
+ if ( this.ownerDocument != childNode.ownerDocument ) {
+ // :REVISIT: change to DOMException
+ throw new ParseError( "Cannot append child to this document" );
+ }
+
+ if ( this.childNodes.length == 1 ) {
+ this.firstChild = childNode;
+ }
+
+ this.lastChild = childNode;
+ childNode.parentNode = this;
+
+ var prevSibling = this.childNodes.item( -2 );
+ childNode.previousSibling = prevSibling;
+
+ if ( prevSibling != null ) {
+ prevSibling.nextSibling = childNode;
+ }
+}
+
+Node.prototype.cloneNode =
+function( deep ) {
+ // :REVISIT: change to DOMException
+ throw new ParseError( "Not implemented" );
+}
+
+Node.prototype.hasChildNodes =
+function() {
+ return ( this.childNodes.length > 0 );
+}
+
+Node.prototype.insertBefore =
+function( newChild, refChild ) {
+ var currentChildren = this.childNodes;
+ this.childNodes = new NodeList();
+ for ( var i = 0; i < currentChildren.length; ) {
+ var child = currentChildren.item(i);
+ if ( child == refChild && refChild != null ) {
+ this.appendChild( newChild );
+ refChild = null;
+ }
+ else {
+ this.appendChild( child );
+ i++;
+ }
+ }
+}
+
+Node.prototype.removeChild =
+function( oldChild ) {
+ var currentChildren = this.childNodes;
+ this.childNodes = new NodeList();
+ for ( var i = 0; i < currentChildren.length; i++ ) {
+ var child = currentChildren.item(i)
+ if ( child != oldChild ) {
+ this.appendChild( child );
+ }
+ }
+}
+
+Node.prototype.replaceChild =
+function( newChild, oldChild ) {
+ var oldChildren = this.childNodes;
+ this.childNodes = new NodeList();
+ for ( var i = 0; i < oldChildren.length; i++ ) {
+ if ( oldChildren.item(i) == oldChild ) {
+ this.appendChild( newChild );
+ }
+ else {
+ this.appendChild( oldChild );
+ }
+ }
+}
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/NodeList.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/NodeList.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/NodeList.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/NodeList.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,42 @@
+/*
+ * NodeList.js
+ * A list of nodes nested at the same level in an XML document
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+function NodeList() {
+ this.length = 0;
+}
+
+NodeList.prototype.getLength =
+function() {
+ return this.length;
+}
+
+NodeList.prototype.item =
+function( index ) {
+ var item;
+ item = ( index < 0 ) ? this[ this.length + index ]
+ : this[ index ];
+ return ( item || null );
+}
+
+NodeList.prototype.add =
+function( node ) {
+ this[ this.length++ ] = node;
+}
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/ParseError.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/ParseError.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/ParseError.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/ParseError.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,28 @@
+/*
+ * ParseError.js
+ * An exception that can occur while parsing an XML document
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+ParseError.prototype = new Error();
+ParseError.prototype.constructor = ParseError;
+ // ParseError : Error
+
+function ParseError( message ) {
+ this.message = message;
+}
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/ProcessingInstruction.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/ProcessingInstruction.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/ProcessingInstruction.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/ProcessingInstruction.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,56 @@
+/*
+ * ProcessingInstruction.js
+ * An processing instruction node in an XML document
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+ProcessingInstruction.prototype = new Node();
+ProcessingInstruction.prototype.constructor = ProcessingInstruction;
+ // ProcessingInstruction : Node
+
+function ProcessingInstruction( ownerDoc, target, data ) {
+ this.target = target;
+ this.data = data;
+
+ // inherited from Node
+ this.nodeName = target;
+ this.nodeType = Node.PROCESSING_INSTRUCTION_NODE;
+ this.nodeValue = data;
+ this.ownerDocument = ownerDoc;
+}
+
+ProcessingInstruction.prototype.getData =
+function() {
+ return this.data;
+}
+
+ProcessingInstruction.prototype.getTarget =
+function() {
+ return this.target;
+}
+
+ProcessingInstruction.prototype.setData =
+function( data ) {
+ this.setNodeValue( data );
+}
+
+ProcessingInstruction.prototype.setNodeValue =
+function( value ) {
+ this.data = data;
+ this.nodeValue = data;
+}
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Text.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Text.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Text.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/Text.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,51 @@
+/*
+ * Text.js
+ * An text node in an XML document
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+Text.prototype = new CharacterData();
+Text.prototype.constructor = Text;
+ // Text : CharacterData
+
+function Text( ownerDoc, data ) {
+ // inherited from CharacterData
+ this.data = data;
+
+ // inherited from CharacterData : Node
+ this.nodeName = "#text";
+ this.nodeType = Node.TEXT_NODE;
+ this.nodeValue = data;
+ this.ownerDocument = ownerDoc;
+}
+
+Text.prototype.splitText =
+function( offset ) {
+ // :REVISIT:
+ // check for index out of bounds condition
+
+ var newText =
+ this.getOwnerDocument().createTextNode( this.data.substring( offset ) );
+
+ var parentNode = this.getParentNode();
+ if ( parentNode != null ) {
+ parentNode.insetBefore( newText, this.nextSibling );
+ }
+
+ return newText;
+}
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/classes/XMLParser.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/classes/XMLParser.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/classes/XMLParser.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/classes/XMLParser.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,429 @@
+/*
+ * XMLParser.js
+ * A regular expression based XML parser
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+XMLParser.VERSION = 1.0;
+
+function XMLParser() {
+ this.doc = new Document();
+ this.xml = null;
+
+ this.openedTags = new Array();
+ this.contextNodes = new Array( this.doc );
+}
+
+XMLParser.prototype.parse =
+function( xml ) {
+ this.xml = xml.trim();
+ this.processProlog();
+ this.processRootElement();
+ this.processMisc();
+
+ if ( this.xml.length != 0 ) {
+ throw( new ParseError( "Illegal construct in XML document" ) );
+ }
+}
+
+XMLParser.prototype.processProlog =
+function() {
+ this.processXmlDecl();
+ this.processMisc();
+ this.processDoctypeDecl();
+ this.processMisc();
+}
+
+XMLParser.prototype.processRootElement =
+function() {
+ var matches;
+
+ if ( matches = this.xml.match( RegExp.$STag ) ) {
+ this.processSTag( matches );
+ this.xml = this.xml.substring( matches[0].length );
+ this.processContent();
+ }
+ else if ( matches = this.xml.match( RegExp.$EmptyElemTag ) ) {
+ this.processEmptyElemTag( matches );
+ this.xml = this.xml.substring( matches[0].length );
+ }
+ else {
+ throw( new ParseError( "Root element not found" ) );
+ }
+}
+
+XMLParser.prototype.processMisc =
+function() {
+ var matches;
+
+ while ( RegExp.$Misc.test( this.xml ) ) {
+
+ // white space
+ if ( matches = this.xml.match( RegExp.$S ) ) {
+ ;
+ }
+ // comment
+ else if ( matches = this.xml.match( RegExp.$Comment ) ) {
+ var comment = this.doc.createComment( matches[1] );
+
+ this.doc.appendChild( comment );
+ }
+ // processing instruction
+ else if ( matches = this.xml.match( RegExp.$PI ) ) {
+ var target = matches[1];
+ var data = matches[3];
+ var pi = this.doc.createProcessingInstruction( target, data );
+
+ this.doc.appendChild( pi );
+ }
+ // unknown construct
+ else {
+ throw( new ParseError( "Illegal construct in XML document" ) );
+ }
+
+ this.xml = this.xml.substring( matches[0].length );
+ }
+}
+
+XMLParser.prototype.processContent =
+function() {
+ var matches;
+
+ while ( this.openedTags.length != 0 ) {
+
+ // start tag
+ if ( matches = this.xml.match( RegExp.$STag ) ) {
+ this.processSTag( matches );
+ }
+ // end tag
+ else if ( matches = this.xml.match( RegExp.$ETag ) ) {
+ this.processETag( matches );
+ }
+ // empty element
+ else if ( matches = this.xml.match( RegExp.$EmptyElemTag ) ) {
+ this.processEmptyElemTag( matches );
+ }
+ // character data
+ else if ( matches = this.xml.match( RegExp.$CharData ) ) {
+ this.processCharData( matches );
+ }
+ // entity reference
+ else if ( matches = this.xml.match( RegExp.$Reference ) ) {
+ this.processReference( matches );
+ }
+ // CDATA section
+ else if ( matches = this.xml.match( RegExp.$CDSect ) ) {
+ this.processCDSect( matches );
+ }
+ // processing instruction
+ else if ( matches = this.xml.match( RegExp.$PI ) ) {
+ this.processPI( matches );
+ }
+ // comment
+ else if ( matches = this.xml.match( RegExp.$Comment ) ) {
+ this.processComment( matches );
+ }
+ // unknown construct
+ else {
+ throw( new ParseError( "Illegal construct in XML document" ) );
+ }
+
+ this.xml = this.xml.substring( matches[0].length );
+ }
+}
+
+XMLParser.prototype.processAttributes =
+function( attString ) {
+ var matches;
+
+ while ( matches = attString.match( RegExp.$Attribute ) ) {
+ var name = matches[1];
+ var value = matches[2].removeQuotes();
+ var attr = this.doc.createAttribute( name );
+ var currentContext = this.contextNodes.lastItem();
+
+ attr.setValue( value );
+
+ attString = attString.substring( matches[0].length ).trim();
+ currentContext.attributes.setNamedItem( attr );
+ }
+}
+
+XMLParser.prototype.processXmlDecl =
+function() {
+ var matches;
+
+ if ( matches = this.xml.match( RegExp.$XMLDecl ) ) {
+ this.xml = this.xml.substring( matches[0].length );
+ }
+}
+
+XMLParser.prototype.processDoctypeDecl =
+function() {
+ var matches;
+
+ if ( matches = this.xml.match( RegExp.$doctypedecl ) ) {
+ var name = matches[1];
+
+ var doctype = new DocumentType( this.doc, name );
+ this.doc.appendChild( doctype );
+ this.doc.doctype = doctype;
+
+ this.xml = this.xml.substring( matches[0].length );
+ }
+}
+
+XMLParser.prototype.processSTag =
+function( matches ) {
+ var element = this.doc.createElement( matches[1] );
+ var attString = matches[2];
+
+ this.openedTags.push( matches[1] );
+ this.addNode( element );
+
+ if ( attString ) {
+ this.processAttributes( attString.trim() );
+ }
+}
+
+XMLParser.prototype.processETag =
+function( matches ) {
+ this.contextNodes.pop();
+
+ if ( this.openedTags.pop() != matches[1] ) {
+ throw( new ParseError( "End tag does not match opening tag" ) );
+ }
+}
+
+XMLParser.prototype.processEmptyElemTag =
+function( matches ) {
+ var element = this.doc.createElement( matches[1] );
+ var attString = matches[2];
+
+ this.addNode( element );
+
+ if ( attString ) {
+ this.processAttributes( attString.trim() );
+ }
+
+ this.contextNodes.pop();
+}
+
+XMLParser.prototype.processCharData =
+function( matches ) {
+ if ( matches[0].trim() != "" ) {
+ var text = this.doc.createTextNode( matches[0] );
+ this.addNode( text );
+ }
+}
+
+XMLParser.prototype.processReference =
+function( matches ) {
+ var reference = this.doc.createEntityReference( matches[0] );
+ this.addNode( reference );
+}
+
+XMLParser.prototype.processCDSect =
+function( matches ) {
+ var cdsect = this.doc.createCDATASection( matches[1] );
+ this.addNode( cdsect );
+}
+
+XMLParser.prototype.processPI =
+function( matches ) {
+ var target = matches[1];
+ var data = matches[3];
+ var pi = this.doc.createProcessingInstruction( target, data );
+ this.addNode( pi );
+}
+
+XMLParser.prototype.processComment =
+function( matches ) {
+ var comment = this.doc.createComment( matches[1] );
+ this.addNode( comment );
+}
+
+XMLParser.prototype.addNode =
+function( node ) {
+ var currentContext = this.contextNodes.lastItem();
+ currentContext.appendChild( node );
+
+ if ( node.nodeType == Node.ELEMENT_NODE ) {
+ var contextNode = currentContext.childNodes.item( -1 );
+ this.contextNodes.push( contextNode );
+
+ if ( !this.doc.documentElement ) {
+ this.doc.documentElement = this.contextNodes.lastItem();
+ }
+ }
+}
+
+/// Utilities //////////////////////////////////////////////////////////////////
+
+/*
+ * Utility. Removes leading and trailing white space
+ * from a string
+ */
+String.prototype.trim =
+function() {
+ return this.replace( /^[ \n\r\t]+|[ \n\r\t]+$/g, "" );
+}
+
+/*
+ * Utility. Like pop(), but does not affect the length
+ * of the array
+ */
+Array.prototype.lastItem =
+function() {
+ return this[ this.length - 1 ];
+}
+
+String.prototype.removeQuotes =
+function() {
+ return this.replace( /^['"]|['"]$/g, "" );
+}
+
+/*
+ * Utility. Translates a string into a regex. Replaces identifiers
+ * (beginning with "$") with corresponding regex fragment
+ */
+String.prototype.resolve =
+function() {
+ var resolved = this;
+ var regex = /(\$[a-zA-Z0-9]+)/;
+
+ while ( regex.test( resolved ) ) {
+ resolved = resolved.replace( RegExp.$1, String[ RegExp.$1 ] );
+ }
+
+ return resolved.replace( / /g,"" );
+}
+
+/// Productions ////////////////////////////////////////////////////////////////
+
+// Character Range
+String.$Char = "(?: \\u0009 | \\u000A | \\u000D | " +
+ "[\\u0020-\\uD7FF] | [\\uE000-\\uFFFD] | " +
+ "[\\u10000-\\u10FFFF] )";
+
+// White Space
+String.$S = "(?: (?: \\u0020 | \\u0009 | \\u000D | \\u000A )+ )";
+
+// Names and matches
+String.$NameChar = "(?: $Letter | $Digit | \\. | \\- | _ | : | " +
+ "$CombiningChar | $Extender )";
+String.$Name = "(?: $Letter | _ | : ) $NameChar*";
+
+// Literals
+String.$AttValue = "(?: \" (?: [^<&\"] | $Reference )* \" ) | " +
+ "(?: ' (?: [^<&'] | $Reference )* ' )";
+String.$SystemLiteral = "(?: (?: \" [^\"]* \") | (?: ' [^']* '))";
+String.$PubidLiteral = "(?: (?: \" $PubidChar* \") | " +
+ "(?: ' (?: (?!')$PubidChar)* '))";
+String.$PubidChar = "(?: \\u0020 | \\u000D | \\u000A | [a-zA-Z0-9] | " +
+ "[-'()+,./:=?;!*#@$_%])";
+
+// Character Data
+//String.$CharData = "(?![^<&]*]]>[^<&]*)[^<&]*"; // :REVISIT:
+String.$CharData = "[^<&]+";
+
+// Comments
+String.$Comment = "<!-- ( (?: (?: (?!- ) $Char ) | " +
+ "(?: - (?: (?!- ) $Char ) ) )* ) -->";
+
+// Processing Instructions
+String.$PI = "<\\? ( $PITarget ) ( $S $Char*? )? \\?>";
+String.$PITarget = "(?: (?: \\b( $Letter | _ | : ) " +
+ "(?: $NameChar ){0,1}\\b ) | " +
+ "(?: (?! [Xx][Mm][Ll] ) (?: $Letter | _ | : ) " +
+ "(?: $NameChar ){2} | (?: $Letter | _ | : ) " +
+ "(?: $NameChar ){3,} ) )";
+
+// CDATA Sections
+String.$CDSect = "<!\\[CDATA\\[ ( $Char*? ) ]]>";
+
+// Prolog
+String.$prolog = "(?: $XMLDecl? $Misc* (?: $doctypedecl $Misc* )? )";
+String.$XMLDecl = "<\\?xml $VersionInfo $EncodingDecl? " +
+ "$SDDecl? $S? \\?>";
+String.$VersionInfo = "(?: $S version $Eq ( ' $VersionNum ' | " +
+ "\" $VersionNum \" ) )";
+String.$Eq = "(?: $S? = $S? )";
+String.$VersionNum = "(?: (?: [a-zA-Z0-9_.:] | - )+ )";
+String.$Misc = "(?: $Comment | $PI | $S )";
+
+// Document Type Definition
+String.$doctypedecl = "<!DOCTYPE $S ( $Name ) (?: $S $ExternalID)? $S? " +
+ "(?: \\[ [^]]* \\] )? $S? >";
+
+// Standalone Document Declaration
+String.$SDDecl = "(?: $S standalone $Eq ( (?: \"(?: yes|no )\" ) | " +
+ "(?: '(?: yes|no)' ) ) )";
+
+// Start-tag
+String.$STag = "< ( $Name ) ( (?: $S $Attribute )* ) $S? >";
+String.$Attribute = "( $Name ) $Eq ( $AttValue )";
+
+// End-tag
+String.$ETag = "</ ( $Name ) $S? >";
+
+// Tags for Empty Elements
+String.$EmptyElemTag = "< ( $Name ) ( (?: $S $Attribute )* ) $S? />";
+
+// Character Reference
+String.$CharRef = "(?: &#[0-9]+; | &#x[0-9a-fA-F]+; )";
+
+// Entity Reference
+String.$Reference = "(?: $EntityRef | $CharRef )";
+String.$EntityRef = "& $Name ;";
+
+// External Entity Declaration
+String.$ExternalID = "(?: (?: SYSTEM $S ( $SystemLiteral ) ) | " +
+ "(?: PUBLIC $S ( $PubidLiteral ) $S " +
+ "( $SystemLiteral ) ) )";
+
+// Encoding Declaration
+String.$EncodingDecl = "(?: $S encoding $Eq ( ' $EncName ' | " +
+ "\" $EncName \" ) )";
+String.$EncName = "[A-Za-z](?: [A-Za-z0-9._]|- )*";
+
+// Characters
+String.$Letter = "(?: $BaseChar | $Ideographic )";
+ if (Boolean.$I18N != true) { // if i18n.js is included
+String.$BaseChar = "(?: [\\u0041-\\u005A] | [\\u0061-\\u007A] )";
+String.$Ideographic = "\\u0000";
+String.$CombiningChar = "\\u0000";
+String.$Digit = "[\\u0030-\\u0039]";
+String.$Extender = "\\u0000";
+ }
+
+// compile regular expressions
+RegExp.$prolog = new RegExp( "^" + String.$prolog.resolve() );
+RegExp.$XMLDecl = new RegExp( "^" + String.$XMLDecl.resolve() );
+RegExp.$doctypedecl = new RegExp( "^" + String.$doctypedecl.resolve() );
+RegExp.$STag = new RegExp( "^" + String.$STag.resolve() );
+RegExp.$ETag = new RegExp( "^" + String.$ETag.resolve() );
+RegExp.$EmptyElemTag = new RegExp( "^" + String.$EmptyElemTag.resolve() );
+RegExp.$Attribute = new RegExp( "^" + String.$Attribute.resolve() );
+RegExp.$CDSect = new RegExp( "^" + String.$CDSect.resolve() );
+RegExp.$CharData = new RegExp( "^" + String.$CharData.resolve() );
+RegExp.$Reference = new RegExp( "^" + String.$Reference.resolve() );
+RegExp.$PI = new RegExp( "^" + String.$PI.resolve() );
+RegExp.$Comment = new RegExp( "^" + String.$Comment.resolve() );
+RegExp.$Misc = new RegExp( "^" + String.$Misc.resolve() );
+RegExp.$S = new RegExp( "^" + String.$S.resolve() );
\ No newline at end of file
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/demo.html
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/demo.html?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/demo.html (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/demo.html Fri Oct 21 14:27:36 2005
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>XML Parsing Demo</title>
+ <script type="text/javascript" src="xmlp.js"></script>
+ <script type="text/javascript">
+ <!--
+
+ function doParse() {
+ var parser = new XMLParser();
+ var form = document.forms[0];
+ var start, finish;
+ var doc = null;
+
+ try {
+ start = new Date().getTime();
+ parser.parse(form.elements[0].value);
+ finish = new Date().getTime();
+ doc = parser.doc;
+ }
+ catch (e) {
+ alert("ERROR: " + e.message);
+ }
+
+ if (doc != null) {
+ form.rootElement.value = doc.getDocumentElement().getTagName();
+ form.elementCount.value = doc.getElementsByTagName("*").getLength();
+ form.hasDoctype.value = (doc.getDoctype() == null) ? "No" : "Yes";
+ form.parseTime.value = (Math.round((finish - start) / 10) / 100) + " sec.";
+ }
+ }
+
+ //-->
+ </script>
+ </head>
+ <body>
+ <form action="javascript:void(0)">
+ <p>
+ <textarea name="xml" id="xml" cols="75" rows="20">
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Sample XHTML page</title>
+ </head>
+ <body>
+ <p class="para">
+ This is a sample paragraph.
+ </p>
+ </body>
+</html>
+ </textarea><br />
+ <input type="button" value="Parse XML" onclick="doParse()" /><br />
+ <br />
+ Root element:<br />
+ <input type="text" name="rootElement" id="rootElement" readonly="readonly" /><br />
+ Number of elements:<br />
+ <input type="text" name="elementCount" id="elementCount" readonly="readonly" /><br />
+ Has DOCTYPE:<br />
+ <input type="text" name="hasDoctype" id="hasDoctype" readonly="readonly" /><br />
+ Parse time:<br />
+ <input type="text" name="parseTime" id="parseTime" readonly="readonly" /><br />
+ (try pasting larger strings of XML to see effect on parse time.)
+ </p>
+ </form>
+ </body>
+</html>
Added: incubator/roller/branches/roller_1.x/web/theme/scripts/i18n.js
URL: http://svn.apache.org/viewcvs/incubator/roller/branches/roller_1.x/web/theme/scripts/i18n.js?rev=327589&view=auto
==============================================================================
--- incubator/roller/branches/roller_1.x/web/theme/scripts/i18n.js (added)
+++ incubator/roller/branches/roller_1.x/web/theme/scripts/i18n.js Fri Oct 21 14:27:36 2005
@@ -0,0 +1,366 @@
+/*
+ * i18n.js
+ * Unicode international characters allowed in an XML document
+ *
+ * NOTE: if international characters are needed, this file must be included
+ * BEFORE xmlp.js
+ *
+ * Copyright (C) 2001 David A. Lindquist (dave@gazingus.org)
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+Boolean.$I18N = true;
+
+String.$BaseChar = "(" +
+ "[\\u0041-\\u005A] | " +
+ "[\\u0061-\\u007A] | " +
+ "[\\u00C0-\\u00D6] | " +
+ "[\\u00D8-\\u00F6] | " +
+ "[\\u00F8-\\u00FF] | " +
+ "[\\u0100-\\u0131] | " +
+ "[\\u0134-\\u013E] | " +
+ "[\\u0141-\\u0148] | " +
+ "[\\u014A-\\u017E] | " +
+ "[\\u0180-\\u01C3] | " +
+ "[\\u01CD-\\u01F0] | " +
+ "[\\u01F4-\\u01F5] | " +
+ "[\\u01FA-\\u0217] | " +
+ "[\\u0250-\\u02A8] | " +
+ "[\\u02BB-\\u02C1] | " +
+ "\\u0386 | " +
+ "[\\u0388-\\u038A] | " +
+ "\\u038C | " +
+ "[\\u038E-\\u03A1] | " +
+ "[\\u03A3-\\u03CE] | " +
+ "[\\u03D0-\\u03D6] | " +
+ "\\u03DA | " +
+ "\\u03DC | " +
+ "\\u03DE | " +
+ "\\u03E0 | " +
+ "[\\u03E2-\\u03F3] | " +
+ "[\\u0401-\\u040C] | " +
+ "[\\u040E-\\u044F] | " +
+ "[\\u0451-\\u045C] | " +
+ "[\\u045E-\\u0481] | " +
+ "[\\u0490-\\u04C4] | " +
+ "[\\u04C7-\\u04C8] | " +
+ "[\\u04CB-\\u04CC] | " +
+ "[\\u04D0-\\u04EB] | " +
+ "[\\u04EE-\\u04F5] | " +
+ "[\\u04F8-\\u04F9] | " +
+ "[\\u0531-\\u0556] | " +
+ "\\u0559 | " +
+ "[\\u0561-\\u0586] | " +
+ "[\\u05D0-\\u05EA] | " +
+ "[\\u05F0-\\u05F2] | " +
+ "[\\u0621-\\u063A] | " +
+ "[\\u0641-\\u064A] | " +
+ "[\\u0671-\\u06B7] | " +
+ "[\\u06BA-\\u06BE] | " +
+ "[\\u06C0-\\u06CE] | " +
+ "[\\u06D0-\\u06D3] | " +
+ "\\u06D5 | " +
+ "[\\u06E5-\\u06E6] | " +
+ "[\\u0905-\\u0939] | " +
+ "\\u093D | " +
+ "[\\u0958-\\u0961] | " +
+ "[\\u0985-\\u098C] | " +
+ "[\\u098F-\\u0990] | " +
+ "[\\u0993-\\u09A8] | " +
+ "[\\u09AA-\\u09B0] | " +
+ "\\u09B2 | " +
+ "[\\u09B6-\\u09B9] | " +
+ "[\\u09DC-\\u09DD] | " +
+ "[\\u09DF-\\u09E1] | " +
+ "[\\u09F0-\\u09F1] | " +
+ "[\\u0A05-\\u0A0A] | " +
+ "[\\u0A0F-\\u0A10] | " +
+ "[\\u0A13-\\u0A28] | " +
+ "[\\u0A2A-\\u0A30] | " +
+ "[\\u0A32-\\u0A33] | " +
+ "[\\u0A35-\\u0A36] | " +
+ "[\\u0A38-\\u0A39] | " +
+ "[\\u0A59-\\u0A5C] | " +
+ "\\u0A5E | " +
+ "[\\u0A72-\\u0A74] | " +
+ "[\\u0A85-\\u0A8B] | " +
+ "\\u0A8D | " +
+ "[\\u0A8F-\\u0A91] | " +
+ "[\\u0A93-\\u0AA8] | " +
+ "[\\u0AAA-\\u0AB0] | " +
+ "[\\u0AB2-\\u0AB3] | " +
+ "[\\u0AB5-\\u0AB9] | " +
+ "\\u0ABD | " +
+ "\\u0AE0 | " +
+ "[\\u0B05-\\u0B0C] | " +
+ "[\\u0B0F-\\u0B10] | " +
+ "[\\u0B13-\\u0B28] | " +
+ "[\\u0B2A-\\u0B30] | " +
+ "[\\u0B32-\\u0B33] | " +
+ "[\\u0B36-\\u0B39] | " +
+ "\\u0B3D | " +
+ "[\\u0B5C-\\u0B5D] | " +
+ "[\\u0B5F-\\u0B61] | " +
+ "[\\u0B85-\\u0B8A] | " +
+ "[\\u0B8E-\\u0B90] | " +
+ "[\\u0B92-\\u0B95] | " +
+ "[\\u0B99-\\u0B9A] | " +
+ "\\u0B9C | " +
+ "[\\u0B9E-\\u0B9F] | " +
+ "[\\u0BA3-\\u0BA4] | " +
+ "[\\u0BA8-\\u0BAA] | " +
+ "[\\u0BAE-\\u0BB5] | " +
+ "[\\u0BB7-\\u0BB9] | " +
+ "[\\u0C05-\\u0C0C] | " +
+ "[\\u0C0E-\\u0C10] | " +
+ "[\\u0C12-\\u0C28] | " +
+ "[\\u0C2A-\\u0C33] | " +
+ "[\\u0C35-\\u0C39] | " +
+ "[\\u0C60-\\u0C61] | " +
+ "[\\u0C85-\\u0C8C] | " +
+ "[\\u0C8E-\\u0C90] | " +
+ "[\\u0C92-\\u0CA8] | " +
+ "[\\u0CAA-\\u0CB3] | " +
+ "[\\u0CB5-\\u0CB9] | " +
+ "\\u0CDE | " +
+ "[\\u0CE0-\\u0CE1] | " +
+ "[\\u0D05-\\u0D0C] | " +
+ "[\\u0D0E-\\u0D10] | " +
+ "[\\u0D12-\\u0D28] | " +
+ "[\\u0D2A-\\u0D39] | " +
+ "[\\u0D60-\\u0D61] | " +
+ "[\\u0E01-\\u0E2E] | " +
+ "\\u0E30 | " +
+ "[\\u0E32-\\u0E33] | " +
+ "[\\u0E40-\\u0E45] | " +
+ "[\\u0E81-\\u0E82] | " +
+ "\\u0E84 | " +
+ "[\\u0E87-\\u0E88] | " +
+ "\\u0E8A | " +
+ "\\u0E8D | " +
+ "[\\u0E94-\\u0E97] | " +
+ "[\\u0E99-\\u0E9F] | " +
+ "[\\u0EA1-\\u0EA3] | " +
+ "\\u0EA5 | " +
+ "\\u0EA7 | " +
+ "[\\u0EAA-\\u0EAB] | " +
+ "[\\u0EAD-\\u0EAE] | " +
+ "\\u0EB0 | " +
+ "[\\u0EB2-\\u0EB3] | " +
+ "\\u0EBD | " +
+ "[\\u0EC0-\\u0EC4] | " +
+ "[\\u0F40-\\u0F47] | " +
+ "[\\u0F49-\\u0F69] | " +
+ "[\\u10A0-\\u10C5] | " +
+ "[\\u10D0-\\u10F6] | " +
+ "\\u1100 | " +
+ "[\\u1102-\\u1103] | " +
+ "[\\u1105-\\u1107] | " +
+ "\\u1109 | " +
+ "[\\u110B-\\u110C] | " +
+ "[\\u110E-\\u1112] | " +
+ "\\u113C | " +
+ "\\u113E | " +
+ "\\u1140 | " +
+ "\\u114C | " +
+ "\\u114E | " +
+ "\\u1150 | " +
+ "[\\u1154-\\u1155] | " +
+ "\\u1159 | " +
+ "[\\u115F-\\u1161] | " +
+ "\\u1163 | " +
+ "\\u1165 | " +
+ "\\u1167 | " +
+ "\\u1169 | " +
+ "[\\u116D-\\u116E] | " +
+ "[\\u1172-\\u1173] | " +
+ "\\u1175 | " +
+ "\\u119E | " +
+ "\\u11A8 | " +
+ "\\u11AB | " +
+ "[\\u11AE-\\u11AF] | " +
+ "[\\u11B7-\\u11B8] | " +
+ "\\u11BA | " +
+ "[\\u11BC-\\u11C2] | " +
+ "\\u11EB | " +
+ "\\u11F0 | " +
+ "\\u11F9 | " +
+ "[\\u1E00-\\u1E9B] | " +
+ "[\\u1EA0-\\u1EF9] | " +
+ "[\\u1F00-\\u1F15] | " +
+ "[\\u1F18-\\u1F1D] | " +
+ "[\\u1F20-\\u1F45] | " +
+ "[\\u1F48-\\u1F4D] | " +
+ "[\\u1F50-\\u1F57] | " +
+ "\\u1F59 | " +
+ "\\u1F5B | " +
+ "\\u1F5D | " +
+ "[\\u1F5F-\\u1F7D] | " +
+ "[\\u1F80-\\u1FB4] | " +
+ "[\\u1FB6-\\u1FBC] | " +
+ "\\u1FBE | " +
+ "[\\u1FC2-\\u1FC4] | " +
+ "[\\u1FC6-\\u1FCC] | " +
+ "[\\u1FD0-\\u1FD3] | " +
+ "[\\u1FD6-\\u1FDB] | " +
+ "[\\u1FE0-\\u1FEC] | " +
+ "[\\u1FF2-\\u1FF4] | " +
+ "[\\u1FF6-\\u1FFC] | " +
+ "\\u2126 | " +
+ "[\\u212A-\\u212B] | " +
+ "\\u212E | " +
+ "[\\u2180-\\u2182] | " +
+ "[\\u3041-\\u3094] | " +
+ "[\\u30A1-\\u30FA] | " +
+ "[\\u3105-\\u312C] | " +
+ "[\\uAC00-\\uD7A3]" +
+")";
+
+String.$Ideographic = "(" +
+ "[\\u4E00-\\u9FA5] | " +
+ "\\u3007 | " +
+ "[\\u3021-\\u3029]" +
+")";
+
+String.$CombiningChar = "(" +
+ "[\\u0300-\\u0345] | " +
+ "[\\u0360-\\u0361] | " +
+ "[\\u0483-\\u0486] | " +
+ "[\\u0591-\\u05A1] | " +
+ "[\\u05A3-\\u05B9] | " +
+ "[\\u05BB-\\u05BD] | " +
+ "\\u05BF | " +
+ "[\\u05C1-\\u05C2] | " +
+ "\\u05C4 | " +
+ "[\\u064B-\\u0652] | " +
+ "\\u0670 | " +
+ "[\\u06D6-\\u06DC] | " +
+ "[\\u06DD-\\u06DF] | " +
+ "[\\u06E0-\\u06E4] | " +
+ "[\\u06E7-\\u06E8] | " +
+ "[\\u06EA-\\u06ED] | " +
+ "[\\u0901-\\u0903] | " +
+ "\\u093C | " +
+ "[\\u093E-\\u094C] | " +
+ "\\u094D | " +
+ "[\\u0951-\\u0954] | " +
+ "[\\u0962-\\u0963] | " +
+ "[\\u0981-\\u0983] | " +
+ "\\u09BC | " +
+ "\\u09BE | " +
+ "\\u09BF | " +
+ "[\\u09C0-\\u09C4] | " +
+ "[\\u09C7-\\u09C8] | " +
+ "[\\u09CB-\\u09CD] | " +
+ "\\u09D7 | " +
+ "[\\u09E2-\\u09E3] | " +
+ "\\u0A02 | " +
+ "\\u0A3C | " +
+ "\\u0A3E | " +
+ "\\u0A3F | " +
+ "[\\u0A40-\\u0A42] | " +
+ "[\\u0A47-\\u0A48] | " +
+ "[\\u0A4B-\\u0A4D] | " +
+ "[\\u0A70-\\u0A71] | " +
+ "[\\u0A81-\\u0A83] | " +
+ "\\u0ABC | " +
+ "[\\u0ABE-\\u0AC5] | " +
+ "[\\u0AC7-\\u0AC9] | " +
+ "[\\u0ACB-\\u0ACD] | " +
+ "[\\u0B01-\\u0B03] | " +
+ "\\u0B3C | " +
+ "[\\u0B3E-\\u0B43] | " +
+ "[\\u0B47-\\u0B48] | " +
+ "[\\u0B4B-\\u0B4D] | " +
+ "[\\u0B56-\\u0B57] | " +
+ "[\\u0B82-\\u0B83] | " +
+ "[\\u0BBE-\\u0BC2] | " +
+ "[\\u0BC6-\\u0BC8] | " +
+ "[\\u0BCA-\\u0BCD] | " +
+ "\\u0BD7 | " +
+ "[\\u0C01-\\u0C03] | " +
+ "[\\u0C3E-\\u0C44] | " +
+ "[\\u0C46-\\u0C48] | " +
+ "[\\u0C4A-\\u0C4D] | " +
+ "[\\u0C55-\\u0C56] | " +
+ "[\\u0C82-\\u0C83] | " +
+ "[\\u0CBE-\\u0CC4] | " +
+ "[\\u0CC6-\\u0CC8] | " +
+ "[\\u0CCA-\\u0CCD] | " +
+ "[\\u0CD5-\\u0CD6] | " +
+ "[\\u0D02-\\u0D03] | " +
+ "[\\u0D3E-\\u0D43] | " +
+ "[\\u0D46-\\u0D48] | " +
+ "[\\u0D4A-\\u0D4D] | " +
+ "\\u0D57 | " +
+ "\\u0E31 | " +
+ "[\\u0E34-\\u0E3A] | " +
+ "[\\u0E47-\\u0E4E] | " +
+ "\\u0EB1 | " +
+ "[\\u0EB4-\\u0EB9] | " +
+ "[\\u0EBB-\\u0EBC] | " +
+ "[\\u0EC8-\\u0ECD] | " +
+ "[\\u0F18-\\u0F19] | " +
+ "\\u0F35 | " +
+ "\\u0F37 | " +
+ "\\u0F39 | " +
+ "\\u0F3E | " +
+ "\\u0F3F | " +
+ "[\\u0F71-\\u0F84] | " +
+ "[\\u0F86-\\u0F8B] | " +
+ "[\\u0F90-\\u0F95] | " +
+ "\\u0F97 | " +
+ "[\\u0F99-\\u0FAD] | " +
+ "[\\u0FB1-\\u0FB7] | " +
+ "\\u0FB9 | " +
+ "[\\u20D0-\\u20DC] | " +
+ "\\u20E1 | " +
+ "[\\u302A-\\u302F] | " +
+ "\\u3099 | " +
+ "\\u309A" +
+")";
+
+String.$Digit = "(" +
+ "[\\u0030-\\u0039] | " +
+ "[\\u0660-\\u0669] | " +
+ "[\\u06F0-\\u06F9] | " +
+ "[\\u0966-\\u096F] | " +
+ "[\\u09E6-\\u09EF] | " +
+ "[\\u0A66-\\u0A6F] | " +
+ "[\\u0AE6-\\u0AEF] | " +
+ "[\\u0B66-\\u0B6F] | " +
+ "[\\u0BE7-\\u0BEF] | " +
+ "[\\u0C66-\\u0C6F] | " +
+ "[\\u0CE6-\\u0CEF] | " +
+ "[\\u0D66-\\u0D6F] | " +
+ "[\\u0E50-\\u0E59] | " +
+ "[\\u0ED0-\\u0ED9] | " +
+ "[\\u0F20-\\u0F29]" +
+")";
+
+String.$Extender = "(" +
+ "\\u00B7 | " +
+ "\\u02D0 | " +
+ "\\u02D1 | " +
+ "\\u0387 | " +
+ "\\u0640 | " +
+ "\\u0E46 | " +
+ "\\u0EC6 | " +
+ "\\u3005 | " +
+ "[\\u3031-\\u3035] | " +
+ "[\\u309D-\\u309E] | " +
+ "[\\u30FC-\\u30FE]" +
+")";
\ No newline at end of file