mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-16 02:51:50 +00:00
aa2836aa6e
There's no use case for keeping a deep copy of the 'internal' property in the node tree, and it was breaking some of my new tests concerning change markers. We could keep internal data in the node tree if we wanted to, but to be correct we'd have to synchronize every time we changed it, which is a pain. Change-Id: I024de1ff8b6b6154da82c103c4bb21db8ff2ec14
69 lines
1.6 KiB
JavaScript
69 lines
1.6 KiB
JavaScript
/**
|
|
* VisualEditor data model MetaBlockNode class.
|
|
*
|
|
* @copyright 2011-2012 VisualEditor Team and others; see AUTHORS.txt
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
*/
|
|
|
|
/**
|
|
* DataModel node for an alien block node.
|
|
*
|
|
* @class
|
|
* @constructor
|
|
* @extends {ve.dm.BranchNode}
|
|
* @param {Integer} [length] Length of content data in document
|
|
* @param {Object} [attributes] Reference to map of attribute key/value pairs
|
|
*/
|
|
ve.dm.MetaBlockNode = function VeDmMetaBlockNode( length, attributes ) {
|
|
// Parent constructor
|
|
ve.dm.BranchNode.call( this, 'metaBlock', 0, attributes );
|
|
};
|
|
|
|
/* Inheritance */
|
|
|
|
ve.inheritClass( ve.dm.MetaBlockNode, ve.dm.BranchNode );
|
|
|
|
/* Static Members */
|
|
|
|
/**
|
|
* Node rules.
|
|
*
|
|
* @see ve.dm.NodeFactory
|
|
* @static
|
|
* @member
|
|
*/
|
|
ve.dm.MetaBlockNode.rules = {
|
|
'isWrapped': true,
|
|
'isContent': false,
|
|
'canContainContent': false,
|
|
'childNodeTypes': [],
|
|
'parentNodeTypes': null
|
|
};
|
|
|
|
/**
|
|
* Node converters.
|
|
*
|
|
* @see {ve.dm.Converter}
|
|
* @static
|
|
* @member
|
|
*/
|
|
ve.dm.MetaBlockNode.converters = {
|
|
'domElementTypes': ['meta', 'link'],
|
|
'toDomElement': function ( type, element ) {
|
|
var isLink = element.attributes.style === 'link',
|
|
domElement = document.createElement( isLink ? 'link' : 'meta' );
|
|
if ( element.attributes.key !== null ) {
|
|
domElement.setAttribute( isLink ? 'rel' : 'property', element.attributes.key );
|
|
}
|
|
if ( element.attributes.value ) {
|
|
domElement.setAttribute( isLink ? 'href' : 'content', element.attributes.value );
|
|
}
|
|
return domElement;
|
|
},
|
|
'toDataElement': null // Special handling in ve.dm.Converter
|
|
};
|
|
|
|
/* Registration */
|
|
|
|
ve.dm.nodeFactory.register( 'metaBlock', ve.dm.MetaBlockNode );
|