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

Reply via email to