31 lines
		
	
	
	
		
			984 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
	
		
			984 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | /* global HTMLHint */ | ||
|  | /* eslint no-magic-numbers: ["error", { "ignore": [0, 1] }] */ | ||
|  | HTMLHint.addRule({ | ||
|  | 	id: 'kses', | ||
|  | 	description: 'Element or attribute cannot be used.', | ||
|  | 	init: function( parser, reporter, options ) { | ||
|  | 		'use strict'; | ||
|  | 
 | ||
|  | 		var self = this; | ||
|  | 		parser.addListener( 'tagstart', function( event ) { | ||
|  | 			var attr, col, attrName, allowedAttributes, i, len, tagName; | ||
|  | 
 | ||
|  | 			tagName = event.tagName.toLowerCase(); | ||
|  | 			if ( ! options[ tagName ] ) { | ||
|  | 				reporter.error( 'Tag <' + event.tagName + '> is not allowed.', event.line, event.col, self, event.raw ); | ||
|  | 				return; | ||
|  | 			} | ||
|  | 
 | ||
|  | 			allowedAttributes = options[ tagName ]; | ||
|  | 			col = event.col + event.tagName.length + 1; | ||
|  | 			for ( i = 0, len = event.attrs.length; i < len; i++ ) { | ||
|  | 				attr = event.attrs[ i ]; | ||
|  | 				attrName = attr.name.toLowerCase(); | ||
|  | 				if ( ! allowedAttributes[ attrName ] ) { | ||
|  | 					reporter.error( 'Tag attribute [' + attr.raw + ' ] is not allowed.', event.line, col + attr.index, self, attr.raw ); | ||
|  | 				} | ||
|  | 			} | ||
|  | 		}); | ||
|  | 	} | ||
|  | }); |