summaryrefslogtreecommitdiffstats
path: root/wp-includes/js/codemirror/htmlhint-kses.js
diff options
context:
space:
mode:
Diffstat (limited to 'wp-includes/js/codemirror/htmlhint-kses.js')
-rw-r--r--wp-includes/js/codemirror/htmlhint-kses.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/wp-includes/js/codemirror/htmlhint-kses.js b/wp-includes/js/codemirror/htmlhint-kses.js
new file mode 100644
index 0000000..1aa7ffb
--- /dev/null
+++ b/wp-includes/js/codemirror/htmlhint-kses.js
@@ -0,0 +1,30 @@
+/* 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 );
+ }
+ }
+ });
+ }
+});