|
|
- /* 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 );
- }
- }
- });
- }
- });
|