On 02/23/2016 12:45 PM, James Montalvo wrote:
I'm trying to make images from an external source, provided by a parser
function, work with VisualEditor and Parsoid. For a very simplified
illustration I added the following to the bottom of LocalSettings.php


```
$wgExtensionMessagesFiles['myPfTest'] = "$IP/myPfTest.php";
$wgHooks['ParserFirstCallInit'][] = function( &$parser ) {
     $parser->setFunctionHook(
         'test_func',
         function ( &$parser ) {

             // Output a wiki image and an external image
             $output = "[[File:Test.png|frameless|300px]]" .
                 "<br />" .
                 "<img src='http://goo.gl/fh3yKh' />";

             return array(
                 $output,
                 "noparse" => true,
                 "isHTML" => true,

TL:DR; Parsoid does not support the noparse / isHTML options right now which explains everything that you describe in your email.

More specifically, Parsoid queries the mediawiki API to get expanded wikitext for template and parser functions and as https://www.mediawiki.org/wiki/API:Expandtemplates shows (unless I has misread it), we don't have access to the noparse / isHTML information. So, when Parsoid receives the text back, it treats it as wikitext and parses it. Fixing this will require updating the expandtemplates API to return this information to Parsoid.

Separately and somewhat tangentially, we have implemented native extension support in Parsoid. We are still working through our support for it by porting some tag extensions to Parsoid. In the process, we expect it will go through some more changes and tweaks, and we will document this fully at that point.

In that context, while we hadn't anticipated this use case, we could potentially provide the equivalent of function hooks within Parsoid. These hooks will not be attached to the parsing lifecycle since the parsing lifecycle is different in the PHP core parser and Parsoid (or for any other hypothetical future implementation of wikitext parsing that someone else might implement). But, once in place, this will let you replicate this transformation (which is what it is, in reality) in Parsoid either by having the output of the function parsed, wrapping it as a string, or treating it as a DOM fragment. But, I am mostly thinking aloud here at this point.

So, long story short, there isn't a way to do what you are trying to do in VE/Parsoid .... yet.

Subbu.

_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to