-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathcss-lint.js
More file actions
1 lines (1 loc) · 1.81 KB
/
css-lint.js
File metadata and controls
1 lines (1 loc) · 1.81 KB
1
define(function(require,exports,module){const CodeInspection=brackets.getModule("language/CodeInspection"),Strings=brackets.getModule("strings"),LanguageManager=brackets.getModule("language/LanguageManager"),StringUtils=brackets.getModule("utils/StringUtils"),IndexingWorker=brackets.getModule("worker/IndexingWorker");function getTypeFromSeverity(sev){switch(sev){case 1:return CodeInspection.Type.ERROR;case 2:return CodeInspection.Type.WARNING;default:return CodeInspection.Type.META}}IndexingWorker.loadScriptInWorker(`${module.uri}/../worker/css-worker.js`);const cssMode={css:"CSS",less:"LESS",scss:"SCSS"};async function lintOneFile(text,fullPath){return new Promise((resolve,reject)=>{const languageId=LanguageManager.getLanguageForPath(fullPath).getId();if(!cssMode[languageId])return console.error("Unknown language id to lint: ",languageId,fullPath),void reject(new Error("Unknown CSS language to lint for "+fullPath));IndexingWorker.execPeer("cssLint",{text:text,cssMode:cssMode[languageId],filePath:fullPath}).then(lintResult=>{lintResult&&lintResult.length&&(lintResult=lintResult.map(function(lintError){return{pos:{line:lintError.range.start.line,ch:lintError.range.start.character},endPos:{line:lintError.range.end.line,ch:lintError.range.end.character},message:`${lintError.message} (${lintError.code})`,type:getTypeFromSeverity(lintError.severity)}}),resolve({errors:lintResult})),resolve()}).catch(err=>{console.error("CSS Lint failed:",err),reject(new Error("CSS Lint failed as CSS Lint plugin is not yet loaded. Please try again."))})})}const supportedLanguages=["css","less","scss"];for(let language of supportedLanguages)CodeInspection.register(language,{name:StringUtils.format(Strings.CSS_LINT_NAME,cssMode[language]),scanFileAsync:lintOneFile,canInspect:function(fullPath){return fullPath&&!fullPath.endsWith(".min.css")}})});