Skip to content

XiongLiding/gulp-mask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gulp-mask

Mask out things bother your lint.

Lines masked out will replaced by empty lines, so the line number in lint report will same as original file, and developer can locate in source file quickly.

Installation

Use npm

npm install gulp-mask

Usage

var gulp = require('gulp'),
    mask = require('gulp-mask');
    eslint = require('gulp-eslint');

gulp.task('lint', function () {
    return gulp.src(['public/**/*.html'])
        .pipe(mask('<script>', '</script>')) // mask out html and style and leave pure javascript
        .pipe(eslint())
        .pipe(eslint.format());
});

API

mask(keyForOpen, [keyForClose, [beginWithOpen]])

keyForOpen String or Regex

File will mask out line by line by default, until a line match keyForOpen arise. I say mask out, means that line will be repalced by an empty line. When key is String, test with line.trim() == key, When key is Regex, test with key.test(line).

keyForClose String or Regex

Opposite to keyForOpen, when matched, mask come back again.

beginWithOpen Boolean

When set beginWithOpen to true, mask function will be off at beginning, and match engine will look for keyForClose first to take mask back.

Sample

Lint a riot tag with mask('<script>', '</script>').

Before:

<todo>

  <!-- layout -->
  <h3>{ opts.title }</h3>

  <ul>
    <li each={ item, i in items }>{ item }</li>
  </ul>

  <form onsubmit={ add }>
    <input>
    <button>Add #{ items.length + 1 }</button>
  </form>

  <!-- logic -->
  <script>
    this.items = []

    add(e) {
      var input = e.target[0]
      this.items.push(input.value)
      input.value = ''
    }
  </script>

</todo>


After:

















    this.items = []

    add(e) {
      var input = e.target[0]
      this.items.push(input.value)
      input.value = ''
    }




As you see, the javascript still here, at the same position.

Lint coffeescript in jade file, just use mask("script(type='text/coffee').") first

Before:

sample
  p test { value }
    script(type='text/coffee').
      @value = 'sample'

After:




      @value = 'sample'

There are more samples in test dir. original files in fixtures and files masked in expected.

About

mask out things bother your lint.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published