mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-09-24 10:48:42 +00:00
Add MWMetaNode to clean up <meta>/<link> hack in the converter
Change-Id: I4c69bff4981eef78415b43d31c3fd2ee271450ef
This commit is contained in:
parent
314817925a
commit
04c72f6871
|
@ -241,6 +241,7 @@ $wgResourceModules += array(
|
|||
've/dm/nodes/ve.dm.ListNode.js',
|
||||
've/dm/nodes/ve.dm.MetaNode.js',
|
||||
've/dm/nodes/ve.dm.MWEntityNode.js',
|
||||
've/dm/nodes/ve.dm.MWMetaNode.js',
|
||||
've/dm/nodes/ve.dm.ParagraphNode.js',
|
||||
've/dm/nodes/ve.dm.PreformattedNode.js',
|
||||
've/dm/nodes/ve.dm.TableCellNode.js',
|
||||
|
|
|
@ -133,6 +133,7 @@ $html = file_get_contents( $page );
|
|||
<script src="../../modules/ve/dm/nodes/ve.dm.ListNode.js"></script>
|
||||
<script src="../../modules/ve/dm/nodes/ve.dm.MetaNode.js"></script>
|
||||
<script src="../../modules/ve/dm/nodes/ve.dm.MWEntityNode.js"></script>
|
||||
<script src="../../modules/ve/dm/nodes/ve.dm.MWMetaNode.js"></script>
|
||||
<script src="../../modules/ve/dm/nodes/ve.dm.ParagraphNode.js"></script>
|
||||
<script src="../../modules/ve/dm/nodes/ve.dm.PreformattedNode.js"></script>
|
||||
<script src="../../modules/ve/dm/nodes/ve.dm.TableCellNode.js"></script>
|
||||
|
|
40
modules/ve/dm/nodes/ve.dm.MWMetaNode.js
Normal file
40
modules/ve/dm/nodes/ve.dm.MWMetaNode.js
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*!
|
||||
* VisualEditor DataModel MWMetaNode class.
|
||||
*
|
||||
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
|
||||
* @license The MIT License (MIT); see LICENSE.txt
|
||||
*/
|
||||
|
||||
/**
|
||||
* DataModel MW-specific meta node.
|
||||
*
|
||||
* @class
|
||||
* @abstract
|
||||
* @extends ve.dm.MetaNode
|
||||
* @constructor
|
||||
* @param {string} name Node name
|
||||
* @param {number} [length] Length of content data in document; ignored and overridden to 0
|
||||
* @param {Object} [element] Reference to element in linear model
|
||||
*/
|
||||
ve.dm.MWMetaNode = function VeDmMWMetaNode( name, length, element ) {
|
||||
// Parent constructor
|
||||
ve.dm.LeafNode.call( this, name, 0, element );
|
||||
};
|
||||
|
||||
/* Inheritance */
|
||||
|
||||
ve.inheritClass( ve.dm.MWMetaNode, ve.dm.MetaNode );
|
||||
|
||||
/* Static Properties */
|
||||
|
||||
ve.dm.MWMetaNode.static.name = 'MWmeta';
|
||||
|
||||
ve.dm.MWMetaNode.static.matchRdfaTypes = [ /^mw:/ ];
|
||||
|
||||
// toDataElement inherited from MetaNode, will return regular metaBlock/metaInline elements but
|
||||
// that's fine. This class is only here so that <meta>/<link> tags with an mw: type are correctly
|
||||
// mapped to MetaNode and aren't alienated.
|
||||
|
||||
/* Registration */
|
||||
|
||||
ve.dm.modelRegistry.register( ve.dm.MWMetaNode );
|
|
@ -16,7 +16,7 @@
|
|||
* @param {number} [length] Length of content data in document; ignored and overridden to 0
|
||||
* @param {Object} [element] Reference to element in linear model
|
||||
*/
|
||||
ve.dm.MetaNode = function VeDmMetaBlockNode( name, length, element ) {
|
||||
ve.dm.MetaNode = function VeDmMetaNode( name, length, element ) {
|
||||
// Parent constructor
|
||||
ve.dm.LeafNode.call( this, name, 0, element );
|
||||
};
|
||||
|
|
|
@ -260,14 +260,6 @@ ve.dm.Converter.prototype.getDataFromDomRecursion = function ( domElement, annot
|
|||
case Node.ELEMENT_NODE:
|
||||
modelName = this.modelRegistry.matchElement( childDomElement );
|
||||
modelClass = this.modelRegistry.lookup( modelName ) || ve.dm.AlienNode;
|
||||
// HACK: force MetaNode for <meta>/<link> even if they have an mw: type
|
||||
// FIXME EWWWWWW find a better way to handle this
|
||||
if (
|
||||
( childDomElement.nodeName.toLowerCase() === 'meta' || childDomElement.nodeName.toLowerCase() === 'link' ) &&
|
||||
( modelClass.prototype instanceof ve.dm.AlienNode || modelClass === ve.dm.AlienNode )
|
||||
) {
|
||||
modelClass = ve.dm.MetaNode;
|
||||
}
|
||||
if ( modelClass.prototype instanceof ve.dm.Annotation ) {
|
||||
annotation = this.annotationFactory.create( modelName, childDomElement );
|
||||
|
||||
|
|
|
@ -80,6 +80,7 @@
|
|||
<script src="../../ve/dm/nodes/ve.dm.ListNode.js"></script>
|
||||
<script src="../../ve/dm/nodes/ve.dm.MetaNode.js"></script>
|
||||
<script src="../../ve/dm/nodes/ve.dm.MWEntityNode.js"></script>
|
||||
<script src="../../ve/dm/nodes/ve.dm.MWMetaNode.js"></script>
|
||||
<script src="../../ve/dm/nodes/ve.dm.ParagraphNode.js"></script>
|
||||
<script src="../../ve/dm/nodes/ve.dm.PreformattedNode.js"></script>
|
||||
<script src="../../ve/dm/nodes/ve.dm.TableCellNode.js"></script>
|
||||
|
|
Loading…
Reference in a new issue