/*!
 * VisualEditor DataModel MWAlienExtensionNode class.
 *
 * @copyright 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
	const 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;
};