diff --git a/vendor-overwrites/codemirror/addon/lint/css-lint.js b/vendor-overwrites/codemirror/addon/lint/css-lint.js index aa4a30c3..f96d383c 100644 --- a/vendor-overwrites/codemirror/addon/lint/css-lint.js +++ b/vendor-overwrites/codemirror/addon/lint/css-lint.js @@ -3,100 +3,112 @@ // Depends on csslint.js from https://github.com/stubbornella/csslint -// declare global: CSSLint +/* global CodeMirror require define */ +/* global CSSLint stylelint stylelintDefaultConfig */ +'use strict'; -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env +(mod => { + if (typeof exports === 'object' && typeof module === 'object') { + // CommonJS + mod(require('../../lib/codemirror')); + } else if (typeof define === 'function' && define.amd) { + // AMD + define(['../../lib/codemirror'], mod); + } else { + // Plain browser env mod(CodeMirror); -})(function(CodeMirror) { -"use strict"; - -CodeMirror.registerHelper("lint", "csslint", function(text) { - let found = []; - if (window.CSSLint) { - - /* STYLISH: hack start (part 1) */ - var rules = CSSLint.getRules(); - var allowedRules = ["display-property-grouping", "duplicate-properties", "empty-rules", "errors", "known-properties"]; - CSSLint.clearRules(); - rules.forEach(function(rule) { - if (allowedRules.indexOf(rule.id) >= 0) { - CSSLint.addRule(rule); - } - }); - /* STYLISH: hack end */ - - var results = CSSLint.verify(text), messages = results.messages, message = null; - for ( var i = 0; i < messages.length; i++) { - message = messages[i]; - - /* STYLISH: hack start (part 2) */ - if (message.type === 'warning') { - // @font-face {font-family: 'Ampersand'; unicode-range: U+26;} - if (message.message.indexOf('unicode-range') !== -1) { - continue; + } +})(CodeMirror => { + CodeMirror.registerHelper('lint', 'csslint', text => { + const found = []; + if (window.CSSLint) { + /* STYLISH: hack start (part 1) */ + const rules = CSSLint.getRules(); + const allowedRules = [ + 'display-property-grouping', + 'duplicate-properties', + 'empty-rules', + 'errors', + 'known-properties' + ]; + CSSLint.clearRules(); + rules.forEach(rule => { + if (allowedRules.indexOf(rule.id) >= 0) { + CSSLint.addRule(rule); } - else if ( // color: hsl(210, 100%, 2.2%); or color: hsla(210, 100%, 2.2%, 0.3); - message.message.startsWith('Expected () but found \'hsl') && - /hsla?\(\s*(-?\d+)%?\s*,\s*(-?\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%(\s*,\s*(-?\d+|-?\d*.\d+))?\s*\)/.test(message.message) - ) { - continue; - } - // - } + }); /* STYLISH: hack end */ - var startLine = message.line -1, endLine = message.line -1, startCol = message.col -1, endCol = message.col; - found.push({ - from: CodeMirror.Pos(startLine, startCol), - to: CodeMirror.Pos(endLine, endCol), - message: message.message, - severity : message.type - }); - } - } - return found; -}); + const results = CSSLint.verify(text); + const messages = results.messages; + const hslRegex = /hsla?\(\s*(-?\d+)%?\s*,\s*(-?\d+)%\s*,\s*(-?\d+|-?\d*.\d+)%(\s*,\s*(-?\d+|-?\d*.\d+))?\s*\)/; + let message = null; + for (let i = 0; i < messages.length; i++) { + message = messages[i]; -CodeMirror.registerHelper("lint", "stylelint", function(text) { - let found = []; - window.stylelint = require('stylelint').lint; - if (window.stylelint) { - return BG.chromeLocal.getValue('editorStylelintRules').then((rules = stylelintDefaultConfig.rules) => { - // stylelintDefaultConfig stored in stylelint-config.js & loaded by edit.html - if (Object.keys(rules).length === 0) { - rules = stylelintDefaultConfig.rules; - } - return stylelint({ - code: text, - config: { - syntax: stylelintDefaultConfig.syntax, - rules: rules - } - }).then(output => { - const warnings = output.results.length ? output.results[0].warnings : [], - len = warnings.length; - let i, warning; - if (len) { - for (i = 0; i < len; i++) { - warning = warnings[i]; - found.push({ - from: CodeMirror.Pos(warning.line - 1, warning.column - 1), - to: CodeMirror.Pos(warning.line - 1, warning.column), - message: warning.text, - severity : warning.severity - }); + /* STYLISH: hack start (part 2) */ + if (message.type === 'warning') { + // @font-face {font-family: 'Ampersand'; unicode-range: U+26;} + if (message.message.indexOf('unicode-range') !== -1) { + continue; + } else if ( + // color: hsl(210, 100%, 2.2%); or color: hsla(210, 100%, 2.2%, 0.3); + message.message.startsWith('Expected () but found \'hsl') && + hslRegex.test(message.message) + ) { + continue; } } - return found; - }); - }); - } - return found; -}); + /* STYLISH: hack end */ + const startLine = message.line - 1; + const endLine = message.line - 1; + const startCol = message.col - 1; + const endCol = message.col; + found.push({ + from: CodeMirror.Pos(startLine, startCol), + to: CodeMirror.Pos(endLine, endCol), + message: message.message, + severity : message.type + }); + } + } + return found; + }); + CodeMirror.registerHelper('lint', 'stylelint', text => { + const found = []; + window.stylelint = require('stylelint').lint; + if (window.stylelint) { + return BG.chromeLocal.getValue('editorStylelintRules').then((rules = stylelintDefaultConfig.rules) => { + // stylelintDefaultConfig stored in stylelint-config.js & loaded by edit.html + if (Object.keys(rules).length === 0) { + rules = stylelintDefaultConfig.rules; + } + return stylelint({ + code: text, + config: { + syntax: stylelintDefaultConfig.syntax, + rules: rules + } + }).then(output => { + const warnings = output.results.length ? output.results[0].warnings : []; + const len = warnings.length; + let warning; + if (len) { + for (let i = 0; i < len; i++) { + warning = warnings[i]; + found.push({ + from: CodeMirror.Pos(warning.line - 1, warning.column - 1), + to: CodeMirror.Pos(warning.line - 1, warning.column), + message: warning.text, + severity : warning.severity + }); + } + } + return found; + }); + }); + } + return found; + }); });