http://www.mediawiki.org/wiki/Special:Code/MediaWiki/99125
Revision: 99125 Author: tparscal Date: 2011-10-06 18:03:25 +0000 (Thu, 06 Oct 2011) Log Message: ----------- Added references to linear model elements from tree model nodes. Modified Paths: -------------- trunk/parsers/wikidom/lib/hype/bases/es.DocumentModelNode.js trunk/parsers/wikidom/lib/hype/models/es.DocumentModel.js trunk/parsers/wikidom/lib/hype/models/es.ListItemModel.js trunk/parsers/wikidom/lib/hype/models/es.ListModel.js trunk/parsers/wikidom/lib/hype/models/es.ParagraphModel.js trunk/parsers/wikidom/lib/hype/models/es.TableCellModel.js trunk/parsers/wikidom/lib/hype/models/es.TableModel.js trunk/parsers/wikidom/lib/hype/models/es.TableRowModel.js trunk/parsers/wikidom/tests/hype/es.DocumentModel.test.js Modified: trunk/parsers/wikidom/lib/hype/bases/es.DocumentModelNode.js =================================================================== --- trunk/parsers/wikidom/lib/hype/bases/es.DocumentModelNode.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/lib/hype/bases/es.DocumentModelNode.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -9,7 +9,7 @@ * @param {Integer|Array} contents Either Length of content or array of child nodes to append * @property {Integer} contentLength Length of content */ -es.DocumentModelNode = function( contents ) { +es.DocumentModelNode = function( element, contents ) { // Extension var node = $.extend( new es.ModelNode(), this ); @@ -23,6 +23,7 @@ } ); // Properties + node.element = element || null; node.contentLength = 0; if ( typeof contents === 'number' ) { if ( contents < 0 ) { @@ -129,6 +130,16 @@ }; /** + * Gets the element object. + * + * @method + * @returns {Object} Element object in linear data model + */ +es.DocumentModelNode.prototype.getElement = function() { + return this.element; +}; + +/** * Gets the content length. * * FIXME: This method makes assumptions that a node with a data property is a DocumentModel, which Modified: trunk/parsers/wikidom/lib/hype/models/es.DocumentModel.js =================================================================== --- trunk/parsers/wikidom/lib/hype/models/es.DocumentModel.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/lib/hype/models/es.DocumentModel.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -11,7 +11,7 @@ */ es.DocumentModel = function( data, attributes ) { // Inheritance - var node = $.extend( new es.DocumentModelNode( length ), this ); + var node = $.extend( new es.DocumentModelNode( null, length ), this ); // Properties node.data = $.isArray( data ) ? data : []; @@ -20,9 +20,10 @@ // Build a tree of models, which is a space partitioning data structure var currentNode = node; for ( var i = 0, length = node.data.length; i < length; i++ ) { - if ( node.data[i].type !== undefined ) { + if ( data[i].type !== undefined ) { // It's an element, figure out it's type - var type = node.data[i].type, + var element = node.data[i], + type = element.type, open = type[0] !== '/'; // Trim the "/" off the beginning of closing tag types if ( !open ) { @@ -34,7 +35,7 @@ throw 'Unsuported element error. No class registered for element type: ' + type; } // Create a model node for the element - var newNode = new es.DocumentModel.nodeModels[node.data[i].type](); + var newNode = new es.DocumentModel.nodeModels[element.type]( element ); // Add the new model node as a child currentNode.push( newNode ); // Descend into the new model node @@ -47,7 +48,7 @@ // It's content, let's start tracking the length var start = i; // Move forward to the next object, tracking the length as we go - while ( node.data[i].type === undefined && i < length ) { + while ( data[i].type === undefined && i < length ) { i++; } // Now we know how long the current node is @@ -57,6 +58,8 @@ } } + console.dir( node ); + return node; }; @@ -174,7 +177,7 @@ } target.splice( index, 1 ); } - }; + } return { // Retain Modified: trunk/parsers/wikidom/lib/hype/models/es.ListItemModel.js =================================================================== --- trunk/parsers/wikidom/lib/hype/models/es.ListItemModel.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/lib/hype/models/es.ListItemModel.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -4,9 +4,9 @@ * @class * @constructor */ -es.ListItemModel = function( length ) { +es.ListItemModel = function( element, length ) { // Extension - return $.extend( new es.DocumentModelNode( length ), this ); + return $.extend( new es.DocumentModelNode( element, length ), this ); }; /* Methods */ Modified: trunk/parsers/wikidom/lib/hype/models/es.ListModel.js =================================================================== --- trunk/parsers/wikidom/lib/hype/models/es.ListModel.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/lib/hype/models/es.ListModel.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -4,9 +4,9 @@ * @class * @constructor */ -es.ListModel = function( length ) { +es.ListModel = function( element, length ) { // Extension - return $.extend( new es.DocumentModelNode( length ), this ); + return $.extend( new es.DocumentModelNode( element, length ), this ); }; /* Methods */ Modified: trunk/parsers/wikidom/lib/hype/models/es.ParagraphModel.js =================================================================== --- trunk/parsers/wikidom/lib/hype/models/es.ParagraphModel.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/lib/hype/models/es.ParagraphModel.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -4,9 +4,9 @@ * @class * @constructor */ -es.ParagraphModel = function( length ) { +es.ParagraphModel = function( element, length ) { // Extension - return $.extend( new es.DocumentModelNode( length ), this ); + return $.extend( new es.DocumentModelNode( element, length ), this ); }; /* Methods */ Modified: trunk/parsers/wikidom/lib/hype/models/es.TableCellModel.js =================================================================== --- trunk/parsers/wikidom/lib/hype/models/es.TableCellModel.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/lib/hype/models/es.TableCellModel.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -4,9 +4,9 @@ * @class * @constructor */ -es.TableCellModel = function( length ) { +es.TableCellModel = function( element, length ) { // Extension - return $.extend( new es.DocumentModelNode( length ), this ); + return $.extend( new es.DocumentModelNode( element, length ), this ); }; /* Methods */ Modified: trunk/parsers/wikidom/lib/hype/models/es.TableModel.js =================================================================== --- trunk/parsers/wikidom/lib/hype/models/es.TableModel.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/lib/hype/models/es.TableModel.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -4,9 +4,9 @@ * @class * @constructor */ -es.TableModel = function( length ) { +es.TableModel = function( element, length ) { // Extension - return $.extend( new es.DocumentModelNode( length ), this ); + return $.extend( new es.DocumentModelNode( element, length ), this ); }; /* Methods */ Modified: trunk/parsers/wikidom/lib/hype/models/es.TableRowModel.js =================================================================== --- trunk/parsers/wikidom/lib/hype/models/es.TableRowModel.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/lib/hype/models/es.TableRowModel.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -4,9 +4,9 @@ * @class * @constructor */ -es.TableRowModel = function( length ) { +es.TableRowModel = function( element, length ) { // Extension - return $.extend( new es.DocumentModelNode( length ), this ); + return $.extend( new es.DocumentModelNode( element, length ), this ); }; /* Methods */ Modified: trunk/parsers/wikidom/tests/hype/es.DocumentModel.test.js =================================================================== --- trunk/parsers/wikidom/tests/hype/es.DocumentModel.test.js 2011-10-06 17:55:23 UTC (rev 99124) +++ trunk/parsers/wikidom/tests/hype/es.DocumentModel.test.js 2011-10-06 18:03:25 UTC (rev 99125) @@ -184,20 +184,20 @@ * This is a node tree that describes each partition within the document's content data. */ var tree = [ - new es.ParagraphModel( 3 ), - new es.TableModel( [ - new es.TableRowModel( [ - new es.TableCellModel( [ - new es.ParagraphModel( 1 ), - new es.ListModel( [ - new es.ListItemModel( 1 ), - new es.ListItemModel( 1 ), - new es.ListItemModel( 1 ) + new es.ParagraphModel( data[0], 3 ), + new es.TableModel( data[5], [ + new es.TableRowModel( data[6], [ + new es.TableCellModel( data[7], [ + new es.ParagraphModel( data[8], 1 ), + new es.ListModel( data[11], [ + new es.ListItemModel( data[12], 1 ), + new es.ListItemModel( data[15], 1 ), + new es.ListItemModel( data[18], 1 ) ] ) ] ) ] ) ] ), - new es.ParagraphModel( 1 ) + new es.ParagraphModel( data[25], 1 ) ]; test( 'es.DocumentModel', function() { _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs