mediawiki-extensions-Visual.../modules/ve-mw/dm/nodes/ve.dm.MWAlienExtensionNode.js
Arlo Breault d02c0bbf45 Allow alien extension node encapsulation wrappers to be of various types
Like transclusions, extensions can contain nodes of other types.  This
hasn't been an issue because the legacy parser doesn't generate content
with these annotations.  But, moving forward, as Parsoid becoming
responsible for more extensions.  This is the case for the new ImageMap
implementation.

Matches I95767e466803f0744b6626204a0a3a1514fff174

Change-Id: I6ff81a01207e2734090c626b177e5f4d10bb6d61
2020-10-20 11:44:54 -04:00

48 lines
1.2 KiB
JavaScript

/*!
* VisualEditor DataModel MWAlienExtensionNode class.
*
* @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel MediaWiki alien extension node.
*
* @class
* @abstract
*
* @constructor
*/
ve.dm.MWAlienExtensionNode = function VeDmMWAlienExtensionNode() {};
/* Inheritance */
OO.initClass( ve.dm.MWAlienExtensionNode );
/* Static members */
ve.dm.MWAlienExtensionNode.static.getMatchRdfaTypes = function () {
return [
/^mw:Extension/
];
};
// Similar to transclusions, extension encapsulation nodes can be of various types
ve.dm.MWAlienExtensionNode.static.allowedRdfaTypes = null;
ve.dm.MWAlienExtensionNode.static.toDataElement = function ( domElements, converter ) {
// 'Parent' method
var element = ve.dm.MWExtensionNode.static.toDataElement.call( this, domElements, converter ),
isInline = this.isHybridInline( domElements, converter );
element.type = isInline ? 'mwAlienInlineExtension' : 'mwAlienBlockExtension';
return element;
};
/**
* @inheritdoc ve.dm.MWExtensionNode
*/
ve.dm.MWAlienExtensionNode.static.getExtensionName = function ( dataElement ) {
return dataElement.attributes.mw.name;
};