add hasPlugin and getPlugin API methods and tests
This commit is contained in:
		
							
								
								
									
										27
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -1594,6 +1594,29 @@ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Checks if a specific plugin has been registered. | ||||||
|  | 	 * | ||||||
|  | 	 * @param {String} id Unique plugin identifier | ||||||
|  | 	 */ | ||||||
|  | 	function hasPlugin( id ) { | ||||||
|  |  | ||||||
|  | 		return !!plugins[id]; | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Returns the specific plugin instance, if a plugin | ||||||
|  | 	 * with the given ID has been registered. | ||||||
|  | 	 * | ||||||
|  | 	 * @param {String} id Unique plugin identifier | ||||||
|  | 	 */ | ||||||
|  | 	function getPlugin( id ) { | ||||||
|  |  | ||||||
|  | 		return plugins[id]; | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Add a custom key binding with optional description to | 	 * Add a custom key binding with optional description to | ||||||
| 	 * be added to the help screen. | 	 * be added to the help screen. | ||||||
| @@ -5975,8 +5998,10 @@ | |||||||
| 		addKeyBinding: addKeyBinding, | 		addKeyBinding: addKeyBinding, | ||||||
| 		removeKeyBinding: removeKeyBinding, | 		removeKeyBinding: removeKeyBinding, | ||||||
|  |  | ||||||
| 		// Called by plugins to register themselves | 		// API for registering and retrieving plugins | ||||||
| 		registerPlugin: registerPlugin, | 		registerPlugin: registerPlugin, | ||||||
|  | 		hasPlugin: hasPlugin, | ||||||
|  | 		getPlugin: getPlugin, | ||||||
|  |  | ||||||
| 		// Programatically triggers a keyboard event | 		// Programatically triggers a keyboard event | ||||||
| 		triggerKey: function( keyCode ) { | 		triggerKey: function( keyCode ) { | ||||||
|   | |||||||
| @@ -57,6 +57,8 @@ | |||||||
| 				initCounter['PluginD'] += 1; | 				initCounter['PluginD'] += 1; | ||||||
| 			} }; | 			} }; | ||||||
|  |  | ||||||
|  | 			var PluginE = {}; | ||||||
|  |  | ||||||
| 			Reveal.registerPlugin( 'PluginA', PluginA ); | 			Reveal.registerPlugin( 'PluginA', PluginA ); | ||||||
| 			Reveal.registerPlugin( 'PluginB', PluginB ); | 			Reveal.registerPlugin( 'PluginB', PluginB ); | ||||||
| 			Reveal.registerPlugin( 'PluginC', PluginC ); | 			Reveal.registerPlugin( 'PluginC', PluginC ); | ||||||
| @@ -71,7 +73,7 @@ | |||||||
| 				assert.strictEqual( initCounter['PluginB'], 1, 'prevents duplicate registration' ); | 				assert.strictEqual( initCounter['PluginB'], 1, 'prevents duplicate registration' ); | ||||||
| 			}); | 			}); | ||||||
|  |  | ||||||
| 			QUnit.test( 'Can initialie asynchronously', function( assert ) { | 			QUnit.test( 'Can initialize asynchronously', function( assert ) { | ||||||
| 				assert.expect( 3 ); | 				assert.expect( 3 ); | ||||||
| 				var done = assert.async( 2 ); | 				var done = assert.async( 2 ); | ||||||
|  |  | ||||||
| @@ -86,6 +88,17 @@ | |||||||
| 					done(); | 					done(); | ||||||
| 				}); | 				}); | ||||||
| 			} ); | 			} ); | ||||||
|  |  | ||||||
|  | 			QUnit.test( 'Can check if plugin is registered', function( assert ) { | ||||||
|  | 				assert.strictEqual( Reveal.hasPlugin( 'PluginA' ), true ); | ||||||
|  | 				assert.strictEqual( Reveal.hasPlugin( 'PluginE' ), false ); | ||||||
|  | 				Reveal.registerPlugin( 'PluginE', PluginE ); | ||||||
|  | 				assert.strictEqual( Reveal.hasPlugin( 'PluginE' ), true ); | ||||||
|  | 			} ); | ||||||
|  |  | ||||||
|  | 			QUnit.test( 'Can retrieve plugin instance', function( assert ) { | ||||||
|  | 				assert.strictEqual( Reveal.getPlugin( 'PluginB' ), PluginB ); | ||||||
|  | 			} ); | ||||||
| 		</script> | 		</script> | ||||||
|  |  | ||||||
| 	</body> | 	</body> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user