Parsoid
A bidirectional parser between wikitext and HTML5
Loading...
Searching...
No Matches
Wikimedia\Parsoid\Ext\ExtensionTagHandler Class Reference

A Parsoid extension module may register handlers for one or more extension tags. More...

+ Inheritance diagram for Wikimedia\Parsoid\Ext\ExtensionTagHandler:

Public Member Functions

 sourceToDom (ParsoidExtensionAPI $extApi, string $src, array $extArgs)
 Convert an extension tag's content to DOM.
 
 lintHandler (ParsoidExtensionAPI $extApi, Element $rootNode, callable $defaultHandler)
 Lint handler for this extension.
 
 domToWikitext (ParsoidExtensionAPI $extApi, Element $node, bool $wrapperUnmodified)
 Serialize a DOM node created by this extension to wikitext.
 
 modifyArgDict (ParsoidExtensionAPI $extApi, object $argDict)
 Some extensions require the ability to modify the argument dictionary.
 
 diffHandler (ParsoidExtensionAPI $extApi, callable $domDiff, Element $origNode, Element $editedNode)
 XXX: Experimental.
 

Detailed Description

A Parsoid extension module may register handlers for one or more extension tags.

The only method which is generally required by all extension tags is sourceToDom (but Translate doesn't even implement that). All other methods have default do-nothing implementations; override them iff you wish to implement those features. Default implementations consistently return false to indicate not-implemented (in some cases null would be a valid return value, and in other cases null would be a likely "accidental" return value which we'd like to catch and flag).

Member Function Documentation

◆ diffHandler()

Wikimedia\Parsoid\Ext\ExtensionTagHandler::diffHandler ( ParsoidExtensionAPI $extApi,
callable $domDiff,
Element $origNode,
Element $editedNode )

XXX: Experimental.

Call $domDiff on corresponding substrees of $origNode and $editedNode

Parameters
ParsoidExtensionAPI$extApi
callable$domDiff
Element$origNode
Element$editedNode
Returns
bool

Reimplemented in Wikimedia\Parsoid\Ext\Cite\Ref, Wikimedia\Parsoid\Ext\Cite\References, and Wikimedia\Parsoid\Ext\Gallery\Gallery.

◆ domToWikitext()

Wikimedia\Parsoid\Ext\ExtensionTagHandler::domToWikitext ( ParsoidExtensionAPI $extApi,
Element $node,
bool $wrapperUnmodified )

Serialize a DOM node created by this extension to wikitext.

Parameters
ParsoidExtensionAPI$extApi
Element$node
bool$wrapperUnmodified
Returns
string|false Return false to use the default serialization.

Reimplemented in Wikimedia\Parsoid\Ext\Cite\Ref, Wikimedia\Parsoid\Ext\Cite\References, Wikimedia\Parsoid\Ext\Gallery\Gallery, Wikimedia\Parsoid\Ext\LST\LST, and Wikimedia\Parsoid\Ext\Nowiki\Nowiki.

◆ lintHandler()

Wikimedia\Parsoid\Ext\ExtensionTagHandler::lintHandler ( ParsoidExtensionAPI $extApi,
Element $rootNode,
callable $defaultHandler )

Lint handler for this extension.

If the extension has lints it wants to expose, it should use $extApi to register those lints. Alternatively, the extension might simply inspect its DOM and invoke the default lint handler on a DOM tree that it wants inspected. For example, <ref> nodes often only have a pointer (the id attribute) to its content, and is lint handler would look up the DOM tree and invoke the default lint handler on that tree.

FIXME: There is probably no reason for the lint handler to return anything. The caller should simply proceed with the next sibling of $rootNode after the lint handler returns.

Parameters
ParsoidExtensionAPI$extApi
Element$rootNodeExtension content's root node
callable$defaultHandlerDefault lint handler
  • Default lint handler has signature $defaultHandler( Element $elt ): void
Returns
Node|null|false Return false to indicate that this extension has no special lint handler (the default lint handler will be used. Return null to indicate linting should proceed with the next sibling. (Deprecated) A Node can be returned to indicate the point in the tree where linting should resume.

Reimplemented in Wikimedia\Parsoid\Ext\Cite\Ref, and Wikimedia\Parsoid\Ext\Cite\References.

◆ modifyArgDict()

Wikimedia\Parsoid\Ext\ExtensionTagHandler::modifyArgDict ( ParsoidExtensionAPI $extApi,
object $argDict )

Some extensions require the ability to modify the argument dictionary.

Parameters
ParsoidExtensionAPI$extApi
object$argDict

Reimplemented in Wikimedia\Parsoid\Ext\Gallery\Gallery.

◆ sourceToDom()

Wikimedia\Parsoid\Ext\ExtensionTagHandler::sourceToDom ( ParsoidExtensionAPI $extApi,
string $src,
array $extArgs )

Convert an extension tag's content to DOM.

Parameters
ParsoidExtensionAPI$extApi
string$srcExtension tag content
array$extArgsExtension tag arguments The extension tag arguments should be treated as opaque objects and any necessary inspection should be handled through the API.
Returns
DocumentFragment|false|null DocumentFragment if returning some parsed content false to fallback to the default handler for the content null to drop the instance completely

Reimplemented in Wikimedia\Parsoid\Ext\Gallery\Gallery, Wikimedia\Parsoid\ParserTests\I18nTag, Wikimedia\Parsoid\ParserTests\ParserHook, Wikimedia\Parsoid\ParserTests\RawHTML, Wikimedia\Parsoid\ParserTests\StyleTag, Wikimedia\Parsoid\Ext\Poem\Poem, Wikimedia\Parsoid\Ext\ImageMap\ImageMap, Wikimedia\Parsoid\Ext\Cite\Ref, Wikimedia\Parsoid\Ext\Cite\References, Wikimedia\Parsoid\Ext\Nowiki\Nowiki, and Wikimedia\Parsoid\Ext\Pre\Pre.


The documentation for this class was generated from the following file: