49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*jslint node: true, sloppy: true */
 | |
| /*globals LINTER_PATH, load */
 | |
| 
 | |
| var CSSLint = require("./csslint-node").CSSLint;
 | |
| 
 | |
| exports.lint = function (code, config) {
 | |
|     var results = [];
 | |
| 
 | |
|     var ruleset = {};
 | |
| 
 | |
|     // rules that are `false` will be ignored.
 | |
|     for (var ruleName in config) {
 | |
| 
 | |
|         if (config[ruleName] === 'warning') {
 | |
|             ruleset[ruleName] = 1;
 | |
|         // Rules set to `true` or 'error' will be considered errors
 | |
|         } else if (config[ruleName]) {
 | |
|             ruleset[ruleName] = 2;
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     var report = CSSLint.verify(code, ruleset);
 | |
| 
 | |
|     report.messages.forEach(function (message) {
 | |
|         if (message) {
 | |
| 
 | |
|             // message.type // warning|error
 | |
|             // message.line
 | |
|             // message.col
 | |
|             // message.message
 | |
|             // message.evidence // Requires sanitizing as it can include CR, LF
 | |
|             // message.rule // The rule object
 | |
| 
 | |
|             // We don't pass on the rollup messages
 | |
|             if (message.rollup !== true) {
 | |
|                 results.push({
 | |
|                     'line': message.line,
 | |
|                     'character': message.col,
 | |
|                     'type': message.type,
 | |
|                     'reason': message.message
 | |
|                 });
 | |
|             }
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     return results;
 | |
| };
 |