/*! * VisualEditor DataModel MWExternalLinkAnnotation class. * * @copyright 2011-2016 VisualEditor Team and others; see AUTHORS.txt * @license The MIT License (MIT); see LICENSE.txt */ /** * DataModel MediaWiki external link annotation. * * Example HTML sources: * * * * * Each example is semantically slightly different, but they don't need special treatment (yet). * * @class * @extends ve.dm.LinkAnnotation * @constructor * @param {Object} element */ ve.dm.MWExternalLinkAnnotation = function VeDmMWExternalLinkAnnotation( element ) { // Parent constructor ve.dm.LinkAnnotation.call( this, element ); }; /* Inheritance */ OO.inheritClass( ve.dm.MWExternalLinkAnnotation, ve.dm.LinkAnnotation ); /* Static Properties */ ve.dm.MWExternalLinkAnnotation.static.name = 'link/mwExternal'; ve.dm.MWExternalLinkAnnotation.static.matchRdfaTypes = [ 'mw:ExtLink' ]; ve.dm.MWExternalLinkAnnotation.static.toDataElement = function ( domElements ) { var parentResult = ve.dm.LinkAnnotation.static.toDataElement.apply( this, arguments ); parentResult.attributes.rel = domElements[ 0 ].getAttribute( 'rel' ); return parentResult; }; ve.dm.MWExternalLinkAnnotation.static.toDomElements = function ( dataElement ) { var parentResult = ve.dm.LinkAnnotation.static.toDomElements.apply( this, arguments ); parentResult[ 0 ].setAttribute( 'rel', dataElement.attributes.rel || 'mw:ExtLink' ); return parentResult; }; /* Methods */ /** * @return {Object} */ ve.dm.MWExternalLinkAnnotation.prototype.getComparableObject = function () { return { type: this.getType(), href: this.getAttribute( 'href' ), rel: this.getAttribute( 'rel' ) || 'mw:ExtLink' }; }; /** * @inheritdoc */ ve.dm.MWExternalLinkAnnotation.prototype.getComparableHtmlAttributes = function () { // Assume that wikitext never adds meaningful html attributes for comparison purposes, // although ideally this should be decided by Parsoid (Bug T95028). return {}; }; /* Registration */ ve.dm.modelRegistry.register( ve.dm.MWExternalLinkAnnotation );