mediawiki-extensions-Visual.../modules/ve/dm/lineardata/ve.dm.FlatLinearData.js
Ed Sanders 6c231be8ab Organise Flat/ElementLinearData methods and tests
Move containsElementData to FlatLinearData next to isElementData. Move
tests for both methods to FlatLinearData.test.js.

Change-Id: I07a192f5925da7cc763efe5e41427f1f47d85850
2013-12-10 17:51:36 +00:00

87 lines
2.3 KiB
JavaScript

/*!
* VisualEditor FlatLinearData classes.
*
* Class containing Flat linear data and an index-value store.
*
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* Flat linear data storage
*
* @class
* @extends ve.dm.LinearData
* @constructor
* @param {ve.dm.IndexValueStore} store Index-value store
* @param {Array} [data] Linear data
*/
ve.dm.FlatLinearData = function VeDmFlatLinearData( store, data ) {
ve.dm.LinearData.call( this, store, data );
};
/* Inheritance */
OO.inheritClass( ve.dm.FlatLinearData, ve.dm.LinearData );
/* Methods */
/**
* Get the type of the element at a specified offset
* @method
* @param {number} offset Data offset
* @returns {string} Type of the element
*/
ve.dm.FlatLinearData.prototype.getType = function ( offset ) {
return ve.dm.LinearData.static.getType( this.getData( offset ) );
};
/**
* Check if data at a given offset is an element.
* @method
* @param {number} offset Data offset
* @returns {boolean} Data at offset is an element
*/
ve.dm.FlatLinearData.prototype.isElementData = function ( offset ) {
return ve.dm.LinearData.static.isElementData( this.getData( offset ) );
};
/**
* Check for elements in data.
*
* This method assumes that any value that has a type property that's a string is an element object.
* Elements are discovered by iterating through the entire data array (backwards).
*
* @method
* @returns {boolean} At least one elements exists in data
*/
ve.dm.FlatLinearData.prototype.containsElementData = function () {
var i = this.getLength();
while ( i-- ) {
if ( this.isElementData( i ) ) {
return true;
}
}
return false;
};
/**
* Checks if data at a given offset is an open element.
* @method
* @param {number} offset Data offset
* @returns {boolean} Data at offset is an open element
*/
ve.dm.FlatLinearData.prototype.isOpenElementData = function ( offset ) {
return ve.dm.LinearData.static.isOpenElementData( this.getData( offset ) );
};
/**
* Checks if data at a given offset is a close element.
* @method
* @param {number} offset Data offset
* @returns {boolean} Data at offset is a close element
*/
ve.dm.FlatLinearData.prototype.isCloseElementData = function ( offset ) {
return ve.dm.LinearData.static.isCloseElementData( this.getData( offset ) );
};