Page MenuHomePhabricator

Migrate boolean flags in ParserOutput to ::setFlag() or ::setOutputFlag() or ::setExtensionData()
Open, LowPublic

Description

There are a large number of ad-hoc booleans in ParserOutput:

  • ::setNoGallery()
  • ::setEnableOOUI()
  • ::setIndexPolicy() (maybe?)
  • ::setNewSection()
  • ::setHideNewSection()
  • ::setPreventClickjacking()

These generally have nothing to do with the parser, they are just pass-throughs from certain extensions or parser functions. We should try to unify them to a standard interface so that the API of ParserOutput doesn't grow w/o limit. Perhaps

function setOutputFlag(string $flag, bool $val = true);

can be used, with a class

class ParserOutputFlags {
   public const PREVENT_CLICKJACKING = 'mw-preventClickjacking';
   public const ENABLE_OOUI = 'mw-enableOOUI';
   // etc
}

In fact, we already have ParserOutput::setExtensionData() *and* ::setFlag(); perhaps this should be used for the backend storage instead of inventing a new method.

Event Timeline

Change 728644 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Add new ParserOutput::{get,set}OutputFlag() interface

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

cscott renamed this task from Migrate boolean flags in ParserOutput to ::setOutputFlag() or ::setExtensionData() to Migrate boolean flags in ParserOutput to ::setFlag() or ::setOutputFlag() or ::setExtensionData().Oct 8 2021, 8:15 PM
cscott updated the task description. (Show Details)

Change 730636 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Mark ParserOutput::getAllFlags() @internal

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

Change 730636 merged by jenkins-bot:

[mediawiki/core@master] Mark ParserOutput::getAllFlags() @internal

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

Change 728644 merged by jenkins-bot:

[mediawiki/core@master] Add new ParserOutput::{get,set}OutputFlag() interface

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

Patches are merged, can we close this ticket?

daniel triaged this task as Medium priority.May 24 2022, 8:22 AM
daniel lowered the priority of this task from Medium to Low.May 30 2022, 3:09 PM

Change 942525 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/core@master] Hard-deprecate ParserOutput::{get,set}Flag()

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

Change 942534 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/CIForms@master] Use ParserOutput::{get,set}ExtensionData instead of deprecated methods

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

Change 942535 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/extensions/PageProperties@master] Use ParserOutput::{get,set}ExtensionData instead of deprecated methods

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

Change 942535 merged by jenkins-bot:

[mediawiki/extensions/PageProperties@master] Use ParserOutput::{get,set}ExtensionData instead of deprecated methods

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

Change 942525 merged by jenkins-bot:

[mediawiki/core@master] Hard-deprecate ParserOutput::{get,set}Flag()

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