mediawiki-extensions-Visual.../modules/ve/dm/nodes/ve.dm.TableCellNode.js
Catrope 819b3ded33 Move matching code from AnnotationFactory to ModelRegistry
ModelRegistry registers both annotations and nodes, and performs
matching on both at the same time. It also registers annotations with
the AnnotationFactory, and nodes with the NodeFactory.

Change-Id: I5e68e506a0e573cc0afe6304ccea058ffc20d1c8
2013-01-22 15:51:37 -08:00

51 lines
1.4 KiB
JavaScript

/*!
* VisualEditor DataModel TableCellNode class.
*
* @copyright 2011-2012 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* DataModel table cell node.
*
* @class
* @extends ve.dm.BranchNode
* @constructor
* @param {ve.dm.BranchNode[]} [children] Child nodes to attach
* @param {Object} [element] Reference to element in linear model
*/
ve.dm.TableCellNode = function VeDmTableCellNode( children, element ) {
// Parent constructor
ve.dm.BranchNode.call( this, 'tableCell', children, element );
};
/* Inheritance */
ve.inheritClass( ve.dm.TableCellNode, ve.dm.BranchNode );
/* Static Properties */
ve.dm.TableCellNode.static.name = 'tableCell';
ve.dm.TableCellNode.static.parentNodeTypes = [ 'tableRow' ];
ve.dm.TableCellNode.static.defaultAttributes = {
'style': 'data'
};
ve.dm.TableCellNode.static.matchTagNames = [ 'td', 'th' ];
ve.dm.TableCellNode.static.toDataElement = function ( domElement ) {
var style = domElement.nodeName.toLowerCase() === 'th' ? 'header' : 'data';
return { 'type': 'tableCell', 'attributes': { 'style': style } };
};
ve.dm.TableCellNode.static.toDomElement = function ( dataElement ) {
var tag = dataElement.attributes && dataElement.attributes.style === 'header' ? 'th' : 'td';
return document.createElement( tag );
};
/* Registration */
ve.dm.modelRegistry.register( 'tableCell', ve.dm.TableCellNode );