plugins/show-invisibles/prism-show-invisibles.js
function handleToken(tokens, name) {
		var value = tokens[name];

		var type = Prism.util.type(value);
		switch (type) {
			case 'RegExp':
				var inside = {};
				tokens[name] = {
					pattern: value,
					inside: inside
				};
				addInvisibles(inside);
				break;

			case 'Array':
				for (var i = 0, l = value.length; i < l; i++) {
					handleToken(value, i);
				}
				break;

			default: // 'Object'
				var inside = value.inside || (value.inside = {});
				addInvisibles(inside);
				break;
		}
	}
function handleToken(tokens, name) {
		var value = tokens[name];

		var type = Prism.util.type(value);
		switch (type) {
			case 'RegExp':
				var inside = {};
				tokens[name] = {
					pattern: value,
					inside: inside
				};
				addInvisibles(inside);
				break;

			case 'Array':
				for (var i = 0, l = value.length; i < l; i++) {
					handleToken(value, i);
				}
				break;

			default: // 'Object'
				var inside = value.inside || (value.inside = {});
				addInvisibles(inside);
				break;
		}
	}
function handleToken ( tokens , name ) { var value = tokens [ name ] ; var type = Prism . util . type ( value ) ; switch ( type ) { case 'RegExp' : var inside = { } ; tokens [ name ] = { pattern : value , inside : inside } ; addInvisibles ( inside ) ; break ; case 'Array' : for ( var i = 0 , l = value . length ; i < l ; i ++ ) { handleToken ( value , i ) ; } break ; default : // 'Object' var inside = value . inside || ( value . inside = { } ) ; addInvisibles ( inside ) ; break ; } }
Handles the recursive calling of `addInvisibles` for one token.

@param {Object|Array} tokens The grammar or array which contains the token.
@param {string|number} name The name or index of the token in `tokens`.
Handles the recursive calling of addInvisibles for one token .