csscomb / core

Framework for writing postprocessors. As seen in CSScomb.
8 stars 5 forks source link

processString error format #4

Open iamstarkov opened 10 years ago

iamstarkov commented 10 years ago
  1. Thrown error should have file property which should be relative path to file:
var filename = options && options.filename &&path.relative(file.cwd, file.path)
  1. Thrown error should have clear message property without note about path to current file or csscomb and gonzales versions.

If we csscomb core will throw error in this format then linters will can collect invalid files with errors in and output the result it at the end of linting all the files like this

CSScomb linting failed for these files:
! css/asd.css
! css/qwe.css

css/asd.css
1 | asd{
2*|     asd
3 | }

css/qwe.css
1 | asd{
2*|     color: red !important;
3 | }

Total: 2 bad files.
tonyganch commented 10 years ago

There are 4 types of errors in CSScomb based on who is responsible for breaking stuff:

  1. User (e.g. unacceptable value in config, something weird in comb.use())
  2. Third-party developer
  3. Parser
  4. Linter

processString method throws only parsing errors, so they have nothing to do with linting. What you need for a linter (as I think) is a separate method lintString (see csscomb/csscomb.js#261) that will return a list of errors:

[
  {
    file: "css/asd.css",
    line: 2,
    column: 9,
    message: "Missing semicolon"
  }, {
    file: "css/qwe.css",
    line: 2,
    column: 11,
    message: "Extra space after colon"
  }
]

And inside your plugin you can decide yourself how you'll print those errors.

iamstarkov commented 10 years ago

yep, you are right. separate method is what I need. it will be better in performance too.