http://www.mediawiki.org/wiki/Special:Code/MediaWiki/99127
Revision: 99127 Author: tparscal Date: 2011-10-06 18:30:37 +0000 (Thu, 06 Oct 2011) Log Message: ----------- Fixed use of the range parameter for getContent Modified Paths: -------------- trunk/parsers/wikidom/lib/hype/es.Range.js trunk/parsers/wikidom/lib/hype/models/es.DocumentModel.js trunk/parsers/wikidom/tests/hype/es.DocumentModel.test.js Modified: trunk/parsers/wikidom/lib/hype/es.Range.js =================================================================== --- trunk/parsers/wikidom/lib/hype/es.Range.js 2011-10-06 18:08:38 UTC (rev 99126) +++ trunk/parsers/wikidom/lib/hype/es.Range.js 2011-10-06 18:30:37 UTC (rev 99127) @@ -16,6 +16,19 @@ this.normalize(); }; + +/** + * Creates a new es.Range object that's a translated version of another. + * + * @method + * @param {es.Range} range Range to base new range on + * @param {Integer} distance Distance to move range by + * @returns {es.Range} New translated range + */ +es.Range.newFromTranslatedRange = function( range, distance ) { + return new es.Range( range.from + distance, range.to + distance ); +}; + /* Methods */ /** Modified: trunk/parsers/wikidom/lib/hype/models/es.DocumentModel.js =================================================================== --- trunk/parsers/wikidom/lib/hype/models/es.DocumentModel.js 2011-10-06 18:08:38 UTC (rev 99126) +++ trunk/parsers/wikidom/lib/hype/models/es.DocumentModel.js 2011-10-06 18:30:37 UTC (rev 99127) @@ -514,15 +514,14 @@ es.DocumentModel.prototype.getContent = function( node, range ) { if ( range ) { range.normalize(); - } else { - range = { - 'start': 0, - 'end': this.contentLength - }; } var offset = this.getOffsetFromNode( node ); if ( offset !== -1 ) { - return this.data.slice( offset + 1, offset + node.getContentLength() + 1 ); + offset++; + var length = node.getContentLength(), + right = range ? Math.min( range.end, length ) : length, + left = range ? range.start : 0; + return this.data.slice( offset + left, offset + right ); } return null; }; Modified: trunk/parsers/wikidom/tests/hype/es.DocumentModel.test.js =================================================================== --- trunk/parsers/wikidom/tests/hype/es.DocumentModel.test.js 2011-10-06 18:08:38 UTC (rev 99126) +++ trunk/parsers/wikidom/tests/hype/es.DocumentModel.test.js 2011-10-06 18:30:37 UTC (rev 99127) @@ -205,5 +205,21 @@ deepEqual( documentModel.getData(), data, 'Flattening plain objects results in correct data' ); deepEqual( documentModel.slice( 0 ), tree, 'Nodes contain correct lengths' ); - deepEqual( documentModel[2].getContent(), ['a'], 'Content can be extracted from document' ); + deepEqual( + documentModel[0].getContent( new es.Range( 1, 3 ) ), + [ + ['b', { 'type': 'bold', 'hash': '#bold' }], + ['c', { 'type': 'italic', 'hash': '#italic' }] + ], + 'Content can be extracted from nodes using relative ranges' + ); + deepEqual( + documentModel[0].getContent( new es.Range( 0, 2 ) ), + [ + 'a', + ['b', { 'type': 'bold', 'hash': '#bold' }], + ], + 'Content can be extracted from nodes using relative ranges' + ); + deepEqual( documentModel[2].getContent(), ['a'], 'Content can be extracted from nodes' ); } ); _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs