roger_jshint 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38422ff3dff1e9446962b856fdc19e75fd5d1635
4
- data.tar.gz: c52a4f983c6222f05bff8b680b9dd4c2bcfffab5
3
+ metadata.gz: 173aefd6d7edd876af67a041bbe007a505f26519
4
+ data.tar.gz: 87c805c257ed31095a847af6596c9ad6d1a78791
5
5
  SHA512:
6
- metadata.gz: cb88a897643f3a03eaf60ecfec3367342047f9f512ad540f28ee0c2956c0cf721992529181b0b79f7393e17717fd6d765063d1243a8cd2c94ace0f47449d2fff
7
- data.tar.gz: 55e95cd5352a15724e1094e286ee67e4bcdd01bb50a5a46a3ea2929ae424dcaf4e33f93d67da09e54f6b67da570e596cf208d54a69419d52c5fd3ae63e2efcb9
6
+ metadata.gz: 7505cad99b8b2c88085c7d3bb843af5dde840e87d80eea935409050facbf223bd672b67d183494f0ce9ced312b2b9d699bf83001d7b082174ff81ce69b71620f
7
+ data.tar.gz: 365153eb8ab08abca4e8d5d61295c4854139b7db992bac137e4f32d368abb1d18e522aaf71988818684a9e6bbcf6f58809fa8237293071ea9134e457acecd668
data/README.md CHANGED
@@ -1,4 +1,25 @@
1
1
  roger_jshint
2
2
  ============
3
3
 
4
- Lint JavaScript files within Roger
4
+ Lint JavaScript files from within Roger. This plugin uses [jshint](https://github.com/jshint/jshint). If present, .jshintrc in your project will be used. If not, jshint will walk the directory tree upwards until a .jshintrc file is found. As a last resort, [jshint's default configuration](https://raw.githubusercontent.com/jshint/jshint/master/examples/.jshintrc) is used.
5
+
6
+ ## Installation
7
+ * Install jshint using npm: ```npm install jshint -g```
8
+
9
+ * Add ```gem 'roger_jshint'``` to your Gemfile
10
+
11
+ * Add this to your Mockupfile:
12
+ ```
13
+ mockup.test do |t|
14
+ t.use :jshint
15
+ end
16
+ ```
17
+
18
+ * (Optional) put a .jshintrc in your project's root directory.
19
+
20
+ ## Running
21
+ Execute ```roger test jshint```.
22
+
23
+ ## License
24
+
25
+ This project is released under the [MIT license](LICENSE).
@@ -0,0 +1,3 @@
1
+ module RogerJsHint; end
2
+
3
+ require File.dirname(__FILE__) + '/roger_jshint/lint'
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ module.exports = {
4
+ reporter: function (res) {
5
+ var errors = [];
6
+
7
+ res.forEach(function (r) {
8
+ var file = r.file;
9
+ var err = r.error;
10
+
11
+ errors.push([file, err.line, err.character, err.reason]);
12
+ });
13
+
14
+ if (errors) {
15
+ process.stdout.write(JSON.stringify(errors) + "\n");
16
+ }
17
+ }
18
+ };
@@ -0,0 +1,65 @@
1
+ require 'json'
2
+ require 'roger/test'
3
+
4
+ module RogerJsHint
5
+ # JS linter plugin for Roger
6
+ class Lint
7
+ JSHINT = 'jshint'
8
+ JSHINT_COMMAND = "#{JSHINT} --reporter=" +
9
+ File.expand_path('jsonreporter.js', File.dirname(__FILE__)) + ' '
10
+
11
+ # @param [Hash] options The options
12
+ # @option options [Array] :match Files to match
13
+ # @option options [Array[Regexp]] :skip An array of file regular expressions to specifiy which files to skip.
14
+ def initialize(options = {})
15
+ @options = {
16
+ :match => ['html/**/*.js'],
17
+ :skip => []
18
+ }
19
+ @options.update(options) if options
20
+ end
21
+
22
+ def detect_jshint
23
+ `#{JSHINT} -v`
24
+ rescue Errno::ENOENT
25
+ raise 'Could not find jshint. Install jshint using npm.'
26
+ end
27
+
28
+ def report(test, file_path, lints)
29
+ success = true
30
+ if lints.empty?
31
+ test.log(self, "No erors in #{file_path}")
32
+ else
33
+ lints.each do |lint|
34
+ test.log(self,
35
+ "#{lint[0]}:#{lint[1]} " \
36
+ "#{lint[2]}: #{lint[3]}")
37
+ end
38
+ success = false
39
+ end
40
+ success
41
+ end
42
+
43
+ # @param [Hash] options The options
44
+ # @option options [Array] :match Files to match
45
+ # @option options [Array[Regexp]] :skip An array of file regular expressions to specifiy which files to skip.
46
+ def call(test, options)
47
+ options = {}.update(@options).update(options)
48
+
49
+ detect_jshint
50
+ test.log(self, 'JS-linting files')
51
+
52
+ test.get_files(options[:match], options[:skip]).each do |file_path|
53
+ output = `#{JSHINT_COMMAND} #{file_path}`
54
+ if output.start_with? 'ERROR'
55
+ fail "Could not load file #{file_path}"
56
+ else
57
+ lint = JSON.parse output
58
+ report(test, file_path, lint)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+
65
+ Roger::Test.register :jshint, RogerJsHint::Lint
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.authors = ['Hans Krutzer']
5
+ s.email = ['info@digitpaint.nl', 'hans@digitpaint.nl']
6
+ s.name = 'roger_jshint'
7
+ s.version = '0.0.2'
8
+ s.homepage = 'https://github.com/hkrutzer/roger_scsslinter'
9
+
10
+ s.summary = 'Lint JavaScript files within Roger'
11
+ s.description = <<-EOF
12
+ Lint JavaScript files from within Roger, using jshint.
13
+ Will use .jshintrc.
14
+ EOF
15
+ s.licenses = ['MIT']
16
+
17
+ s.date = Time.now.strftime('%Y-%m-%d')
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.require_paths = ['lib']
21
+
22
+ s.add_dependency 'roger', '~> 0.13', '>= 0.13.0'
23
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roger_jshint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hans Krutzer
@@ -14,22 +14,22 @@ dependencies:
14
14
  name: roger
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '0.12'
20
- - - ">="
19
+ version: '0.13'
20
+ - - '>='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.12.5
22
+ version: 0.13.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '0.12'
30
- - - ">="
29
+ version: '0.13'
30
+ - - '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.12.5
32
+ version: 0.13.0
33
33
  description: |2
34
34
  Lint JavaScript files from within Roger, using jshint.
35
35
  Will use .jshintrc.
@@ -40,9 +40,13 @@ executables: []
40
40
  extensions: []
41
41
  extra_rdoc_files: []
42
42
  files:
43
- - ".gitignore"
43
+ - .gitignore
44
44
  - LICENSE
45
45
  - README.md
46
+ - lib/roger_jshint.rb
47
+ - lib/roger_jshint/jsonreporter.js
48
+ - lib/roger_jshint/lint.rb
49
+ - roger_jshint.gemspec
46
50
  homepage: https://github.com/hkrutzer/roger_scsslinter
47
51
  licenses:
48
52
  - MIT
@@ -53,17 +57,17 @@ require_paths:
53
57
  - lib
54
58
  required_ruby_version: !ruby/object:Gem::Requirement
55
59
  requirements:
56
- - - ">="
60
+ - - '>='
57
61
  - !ruby/object:Gem::Version
58
62
  version: '0'
59
63
  required_rubygems_version: !ruby/object:Gem::Requirement
60
64
  requirements:
61
- - - ">="
65
+ - - '>='
62
66
  - !ruby/object:Gem::Version
63
67
  version: '0'
64
68
  requirements: []
65
69
  rubyforge_project:
66
- rubygems_version: 2.4.4
70
+ rubygems_version: 2.0.14
67
71
  signing_key:
68
72
  specification_version: 4
69
73
  summary: Lint JavaScript files within Roger