All files / src ve.TriggerListener.js

88.23% Statements 15/17
100% Branches 2/2
66.66% Functions 4/6
88.23% Lines 15/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67                              1x   371x 371x 371x   371x 23989x 23989x 11074x 13660x   11074x             1x                 1x                   1x 18x                 1x      
/*!
 * VisualEditor UserInterface TriggerListener class.
 *
 * @copyright See AUTHORS.txt
 */
 
/**
 * Trigger listener
 *
 * @class
 *
 * @constructor
 * @param {string[]} commands Commands to listen to triggers for
 * @param {ve.ui.CommandRegistry} commandRegistry Command registry to get commands from
 */
ve.TriggerListener = function VeTriggerListener( commands, commandRegistry ) {
	// Properties
	this.commands = commands;
	this.commandsByTrigger = {};
	this.triggers = {};
 
	this.commands.forEach( ( command ) => {
		const triggers = ve.ui.triggerRegistry.lookup( command );
		if ( triggers ) {
			triggers.forEach( ( trigger ) => {
				this.commandsByTrigger[ trigger.toString() ] = commandRegistry.lookup( command );
			} );
			this.triggers[ command ] = triggers;
		}
	} );
};
 
/* Inheritance */
 
OO.initClass( ve.TriggerListener );
 
/* Methods */
 
/**
 * Get list of commands.
 *
 * @return {string[]} Commands
 */
ve.TriggerListener.prototype.getCommands = function () {
	return this.commands;
};
 
/**
 * Get command associated with trigger string.
 *
 * @param {string} trigger
 * @return {ve.ui.Command|undefined}
 */
ve.TriggerListener.prototype.getCommandByTrigger = function ( trigger ) {
	return this.commandsByTrigger[ trigger ];
};
 
/**
 * Get triggers for a specified name.
 *
 * @param {string} name Trigger name
 * @return {ve.ui.Trigger[]|undefined}
 */
ve.TriggerListener.prototype.getTriggers = function ( name ) {
	return this.triggers[ name ];
};