Mattflaschen has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/276660

Change subject: mediawiki.api.parse: Allow parsing pages
......................................................................

mediawiki.api.parse: Allow parsing pages

Bug: T46925
Change-Id: Ic0d762d02c96e0b39b4983d3b66ebdfb6f88d3a2
---
M resources/src/mediawiki/api/parse.js
M tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js
2 files changed, 29 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/60/276660/1

diff --git a/resources/src/mediawiki/api/parse.js 
b/resources/src/mediawiki/api/parse.js
index 49219d7..d16cbdb 100644
--- a/resources/src/mediawiki/api/parse.js
+++ b/resources/src/mediawiki/api/parse.js
@@ -7,18 +7,30 @@
                /**
                 * Convenience method for 'action=parse'.
                 *
-                * @param {string} wikitext
+                * @param {string|mw.Title} content Content to parse, either as 
a wikitext string or
+                *   a mw.Title.
+                * @param {Object} customConfig Config object to set custom 
settings, e.g. redirects, sectionpreview.
+                *   prop should not be overridden.
                 * @return {jQuery.Promise}
                 * @return {Function} return.done
                 * @return {string} return.done.data Parsed HTML of `wikitext`.
                 */
-               parse: function ( wikitext ) {
-                       var apiPromise = this.get( {
+               parse: function ( content, customConfig ) {
+                       var config = $.extend( {}, customConfig, {
                                formatversion: 2,
                                action: 'parse',
-                               contentmodel: 'wikitext',
-                               text: wikitext
-                       } );
+                               contentmodel: 'wikitext'
+                       } ), apiPromise;
+
+                       if ( $.type( content ) === 'string' ) {
+                               // Wikitext
+                               config.text = content;
+                       } else {
+                               // mw.Title
+                               config.page = content.getPrefixedDb();
+                       }
+
+                       apiPromise = this.get( config );
 
                        return apiPromise
                                .then( function ( data ) {
diff --git 
a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js 
b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js
index f2865eb..4fab90d 100644
--- a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js
+++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js
@@ -6,7 +6,7 @@
        } ) );
 
        QUnit.test( 'Hello world', function ( assert ) {
-               QUnit.expect( 1 );
+               QUnit.expect( 2 );
 
                var api = new mw.Api();
 
@@ -20,6 +20,16 @@
                        );
                } );
 
+               api.parse( new mw.Title( 'Earth' ) ).done( function ( html ) {
+                       assert.equal( html, '<p><b>Earth</b> is a planet.</p>' 
);
+               } );
+
+               this.server.respondWith( /action=parse.*&page=Earth/, function 
( request ) {
+                       request.respond( 200, { 'Content-Type': 
'application/json' },
+                               '{ "parse": { "text": "<p><b>Earth</b> is a 
planet.</p>" } }'
+                       );
+               } );
+
                this.server.respond();
        } );
 }( mediaWiki ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/276660
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic0d762d02c96e0b39b4983d3b66ebdfb6f88d3a2
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Mattflaschen <mflasc...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to