Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1432726
ExtensionTagHandler.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
ExtensionTagHandler.php
View Options
<?php
declare
(
strict_types
=
1
);
namespace
Wikimedia\Parsoid\Ext
;
use
Closure
;
use
Wikimedia\Parsoid\DOM\DocumentFragment
;
use
Wikimedia\Parsoid\DOM\Element
;
/**
* 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).
*/
abstract
class
ExtensionTagHandler
{
/**
* Convert an extension tag's content to DOM
* @param ParsoidExtensionAPI $extApi
* @param string $src Extension tag content
* @param array $extArgs Extension tag arguments
* The extension tag arguments should be treated as opaque objects
* and any necessary inspection should be handled through the API.
* @return 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
*/
public
function
sourceToDom
(
ParsoidExtensionAPI
$extApi
,
string
$src
,
array
$extArgs
)
{
return
false
;
/* Use default wrapper */
}
/**
* Extensions might embed HTML in attributes in their own custom
* representation (whether in data-mw or elsewhere).
*
* Core Parsoid will need a way to traverse such content. This method
* is a way for extension tag handlers to provide this functionality.
* Parsoid will only call this method if the tag's config sets the
* options['wt2html']['embedsHTMLInAttributes'] property to true.
*
* @param ParsoidExtensionAPI $extApi
* @param Element $elt The node whose data attributes need to be examined
* @param Closure $proc The processor that will process the embedded HTML
* Signature: (string) -> string
* This processor will be provided the HTML string as input
* and is expected to return a possibly modified string.
*/
public
function
processAttributeEmbeddedHTML
(
ParsoidExtensionAPI
$extApi
,
Element
$elt
,
Closure
$proc
):
void
{
// Nothing to do by default
}
/**
* 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 its lint handler would
* look up the DOM tree and invoke the default lint handler on that tree.
*
* @param ParsoidExtensionAPI $extApi
* @param Element $rootNode Extension content's root node
* @param callable $defaultHandler Default lint handler
* - Default lint handler has signature $defaultHandler( Element $elt ): void
* @return bool Return `false` to indicate that this
* extension has no special lint handler (the default lint handler will
* be used. Return `true` to indicate linting should proceed with the
* next sibling.
*/
public
function
lintHandler
(
ParsoidExtensionAPI
$extApi
,
Element
$rootNode
,
callable
$defaultHandler
)
{
/* Use default linter */
return
false
;
}
/**
* Serialize a DOM node created by this extension to wikitext.
* @param ParsoidExtensionAPI $extApi
* @param Element $node
* @param bool $wrapperUnmodified
* @return string|false Return false to use the default serialization.
*/
public
function
domToWikitext
(
ParsoidExtensionAPI
$extApi
,
Element
$node
,
bool
$wrapperUnmodified
)
{
/* Use default serialization */
return
false
;
}
/**
* XXX: Experimental
*
* Call $domDiff on corresponding substrees of $origNode and $editedNode
*
* @param ParsoidExtensionAPI $extApi
* @param callable $domDiff
* @param Element $origNode
* @param Element $editedNode
* @return bool
*/
public
function
diffHandler
(
ParsoidExtensionAPI
$extApi
,
callable
$domDiff
,
Element
$origNode
,
Element
$editedNode
):
bool
{
return
false
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 22:15 (1 d, 4 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
fb/50/566db5877ceea8e4c58efa3abb2e
Default Alt Text
ExtensionTagHandler.php (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment