"Máté Szabó" <msz...@wikia-inc.com> wrote in message 
news:80e88bac-ae9b-42ae-a0ba-834a39a7a...@wikia-inc.com...


Hi Máté,

I know it's been a while, but I've only now found some time to work on this 
in any depth.

> The DOM-based wikitext preprocessor (Preprocessor_DOM class and friends)
> was deprecated in MediaWiki 1.34 and removed in MediaWiki 1.35 as part of
> the Wikimedia Parsing Team's work around Parsoid-PHP.[1]

I guess that explains why things changed in MW 1.34, specifically.

> In the short/medium term, the easiest fix to keep your code working would 
> be to
> use the other preprocessor implementation (class Preprocessor_Hash and 
> friends)
> instead.

I think this is what I have now done.  The solution I implemented was to 
replace the following line:

    $NewFrame = new PPTemplateFrame_DOM($Frame->preprocessor,
                                        $Frame, array(), $Vars, 
$Frame->title);

With this:

    if (is_a($Frame, "PPFrame_Hash"))
        $TemplateFrameClass = "PPTemplateFrame_Hash";
    else
        $TemplateFrameClass = "PPTemplateFrame_DOM";

    $NewFrame = new $TemplateFrameClass($Frame->preprocessor,
                                        $Frame, array(), $Vars, 
$Frame->title);

This seems to work on both MW versions I am testing on (1.29 and 1.34) and 
fits-in with your explanation, above.

> Since your code already has access to a PPFrame instance,
> you can also try invoking its newChild() method to construct a
> new child frame with your arguments, instead of creating the
> instance directly.

I couldn't get this to work.  I needed to pass additional arguments into the 
constructor, but got an error if I passed in an array of string => string 
pairs and there was no documentation about how to convert such an array into 
a format that the function would accept, so I gave up on this approach.

> In the long term, the legacy wikitext preprocessor will be removed, so
> you may want to reach out to the Parsing Team[2] to find out how you
> can make your code ready for Parsoid-PHP.

Based on that comment, I suspect that further upgrade work will be required 
in due course, but at least I have solved the immediate problem.... for now!

Thanks for your help,

- Mark Clements
(HappyDog)




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

Reply via email to