mediawiki-extensions-Visual.../modules/ve/dm/nodes/ve.dm.TableSectionNode.js
Catrope aa2836aa6e Remove 'internal' property from DM nodes
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
2012-10-24 16:47:14 -07:00

71 lines
1.7 KiB
JavaScript

/**
* VisualEditor data model TableSelectionNode class.
*
* @copyright 2011-2012 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel node for a table section.
*
* @class
* @constructor
* @extends {ve.dm.BranchNode}
* @param {ve.dm.BranchNode[]} [children] Child nodes to attach
* @param {Object} [attributes] Reference to map of attribute key/value pairs
*/
ve.dm.TableSectionNode = function VeDmTableSectionNode( children, attributes ) {
// Parent constructor
ve.dm.BranchNode.call( this, 'tableSection', children, attributes );
};
/* Inheritance */
ve.inheritClass( ve.dm.TableSectionNode, ve.dm.BranchNode );
/* Static Members */
/**
* Node rules.
*
* @see ve.dm.NodeFactory
* @static
* @member
*/
ve.dm.TableSectionNode.rules = {
'isWrapped': true,
'isContent': false,
'canContainContent': false,
'childNodeTypes': ['tableRow'],
'parentNodeTypes': ['table']
};
/**
* Node converters.
*
* @see {ve.dm.Converter}
* @static
* @member
*/
ve.dm.TableSectionNode.converters = {
'domElementTypes': ['thead', 'tbody', 'tfoot'],
'toDomElement': function ( type, element ) {
return element.attributes && ( {
'header': document.createElement( 'thead' ),
'body': document.createElement( 'tbody' ),
'footer': document.createElement( 'tfoot' )
} )[element.attributes.style];
},
'toDataElement': function ( tag ) {
return ( {
'thead': { 'type': 'tableSection', 'attributes': { 'style': 'header' } },
'tbody': { 'type': 'tableSection', 'attributes': { 'style': 'body' } },
'tfoot': { 'type': 'tableSection', 'attributes': { 'style': 'footer' } }
} )[tag];
}
};
/* Registration */
ve.dm.nodeFactory.register( 'tableSection', ve.dm.TableSectionNode );