jslint-v8 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +5 -5
- data/README.markdown +50 -0
- data/bin/jslint-v8 +28 -4
- data/lib/jslint-v8.rb +3 -1
- data/lib/jslint-v8/formatter.rb +5 -1
- data/lib/jslint-v8/option_parser.rb +39 -0
- data/lib/jslint-v8/rake_task.rb +15 -1
- data/lib/jslint-v8/runner.rb +95 -13
- data/lib/jslint-v8/version.rb +2 -2
- data/test/test_cli.rb +28 -3
- data/test/test_runner.rb +11 -0
- data/test/test_task.rb +28 -0
- metadata +60 -84
data/Gemfile.lock
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jslint-v8 (1.
|
4
|
+
jslint-v8 (1.1.0)
|
5
5
|
therubyracer (~> 0.9.4)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: http://rubygems.org/
|
9
9
|
specs:
|
10
|
-
libv8 (3.3.10.
|
11
|
-
rake (0.9.2)
|
12
|
-
test-unit (2.
|
13
|
-
therubyracer (0.9.
|
10
|
+
libv8 (3.3.10.4)
|
11
|
+
rake (0.9.2.2)
|
12
|
+
test-unit (2.4.5)
|
13
|
+
therubyracer (0.9.9)
|
14
14
|
libv8 (~> 3.3.10)
|
15
15
|
|
16
16
|
PLATFORMS
|
data/README.markdown
CHANGED
@@ -1 +1,51 @@
|
|
1
1
|
[![Build Status](https://secure.travis-ci.org/whoward/jslint-v8.png)](http://travis-ci.org/whoward/jslint-v8)
|
2
|
+
|
3
|
+
# Description
|
4
|
+
|
5
|
+
JSLintV8 is simply a ruby wrapper that helps you run JSLint as an automated
|
6
|
+
code quality standards tool inside your projects. It's geared towards being run
|
7
|
+
in a continuous integration process (CI), such as Jenkins.
|
8
|
+
|
9
|
+
While it is focused on Ruby projects it can just as easily be used for any other
|
10
|
+
language out there so long as you have Ruby installed on your system.
|
11
|
+
|
12
|
+
Like it's name implies we run JSLint on the JavaScript V8 interpreter so, in
|
13
|
+
other words, it runs really really fast.
|
14
|
+
|
15
|
+
# How to use
|
16
|
+
|
17
|
+
1. Make sure you have Ruby and Rubygems installed on your computer (most operating systems except for Windows have this already)
|
18
|
+
|
19
|
+
2. In your console run: ```gem install jslint-v8```
|
20
|
+
|
21
|
+
3. Run the following command ```jslint-v8 path/to/file.js```
|
22
|
+
|
23
|
+
For full details on using the command line interface simply type ```jslint-v8```
|
24
|
+
|
25
|
+
# Rake Task
|
26
|
+
|
27
|
+
In addition to the CLI you can also set up a Rake task to automatically run against
|
28
|
+
a set of files. Inside your Rakefile add the following:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
require 'rake'
|
32
|
+
require 'jslint-v8'
|
33
|
+
|
34
|
+
namespace :js do
|
35
|
+
JSLintV8::RakeTask.new do |task|
|
36
|
+
task.name = "lint"
|
37
|
+
task.include_pattern = "app/javascripts/**/*.js"
|
38
|
+
task.exclude_pattern = "app/javascripts/{generated,lib}/**/*.js"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
Modify the settings as needed. This code will make a task "js:lint" which will
|
44
|
+
run against all javascript files under ```app/javascripts``` except under
|
45
|
+
```app/javascripts/lib``` and ```app/javascripts/generated```
|
46
|
+
|
47
|
+
# Contributing
|
48
|
+
|
49
|
+
Whatever works, but my preference is for you to fork this repository on github
|
50
|
+
and write your changes on a separate branch. When finished you can send them
|
51
|
+
to me by issuing a pull request.
|
data/bin/jslint-v8
CHANGED
@@ -2,15 +2,39 @@
|
|
2
2
|
require 'rubygems'
|
3
3
|
require File.expand_path("../lib/jslint-v8", File.dirname(__FILE__))
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
def print_usage
|
6
|
+
STDERR.puts JSLintV8::OptionParser.new.help
|
7
|
+
exit(255)
|
8
8
|
end
|
9
9
|
|
10
|
+
# if no parameters are passed then print usage and exit
|
11
|
+
print_usage if ARGV.empty?
|
12
|
+
|
13
|
+
# parse the options out of the command line
|
14
|
+
begin
|
15
|
+
parser = JSLintV8::OptionParser.new
|
16
|
+
parser.parse!
|
17
|
+
rescue SystemExit => e
|
18
|
+
# exit with a failing status code, happens with the -h and -v options
|
19
|
+
exit(255)
|
20
|
+
rescue Exception => e
|
21
|
+
# print out an error message and exit with a failing exit code
|
22
|
+
STDERR.puts "#{$0}: #{e.message} (#{e.class.to_s})"
|
23
|
+
exit(255)
|
24
|
+
end
|
25
|
+
|
26
|
+
# if no parameters are left (nothing beyond options given) then print usage and exit
|
27
|
+
print_usage if ARGV.empty?
|
28
|
+
|
29
|
+
# set up a formatter for standard output
|
10
30
|
formatter = JSLintV8::Formatter.new(STDOUT)
|
11
31
|
|
32
|
+
# set up a runner
|
33
|
+
runner = JSLintV8::Runner.new(ARGV)
|
34
|
+
runner.jslint_options.merge!(parser.options[:lint_options])
|
35
|
+
|
12
36
|
# get a list of all failed files, printing . or * along the way depending on the result
|
13
|
-
lint_result =
|
37
|
+
lint_result = runner.run do |file, errors|
|
14
38
|
formatter.tick(errors)
|
15
39
|
end
|
16
40
|
|
data/lib/jslint-v8.rb
CHANGED
@@ -3,4 +3,6 @@ module JSLintV8 end
|
|
3
3
|
require File.expand_path("jslint-v8/runner", File.dirname(__FILE__))
|
4
4
|
require File.expand_path("jslint-v8/rake_task", File.dirname(__FILE__))
|
5
5
|
require File.expand_path("jslint-v8/lint_error", File.dirname(__FILE__))
|
6
|
-
require File.expand_path("jslint-v8/formatter", File.dirname(__FILE__))
|
6
|
+
require File.expand_path("jslint-v8/formatter", File.dirname(__FILE__))
|
7
|
+
require File.expand_path("jslint-v8/option_parser", File.dirname(__FILE__))
|
8
|
+
require File.expand_path("jslint-v8/version", File.dirname(__FILE__))
|
data/lib/jslint-v8/formatter.rb
CHANGED
@@ -27,7 +27,11 @@ module JSLintV8
|
|
27
27
|
|
28
28
|
out.print "\nFailures:\n\n"
|
29
29
|
|
30
|
-
|
30
|
+
# we iterate the sorted keys to prevent a brittle test and also the output
|
31
|
+
# should be nicer as it will be guaranteed to be alphabetized
|
32
|
+
result.keys.sort.each do |file|
|
33
|
+
errors = result[file]
|
34
|
+
|
31
35
|
out.print "#{file}:\n"
|
32
36
|
errors.each do |error|
|
33
37
|
out.print " line #{error.line_number} character #{error.character} #{error.reason}\n"
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module JSLintV8
|
4
|
+
class OptionParser < ::OptionParser
|
5
|
+
|
6
|
+
attr_reader :options
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
|
11
|
+
@options = {}
|
12
|
+
@options[:lint_options] = {}
|
13
|
+
|
14
|
+
self.version = JSLintV8::Version::STRING
|
15
|
+
self.banner = "#{self.banner} <filepattern>..."
|
16
|
+
|
17
|
+
Runner::DefaultOptions.keys.each do |option|
|
18
|
+
default = Runner::DefaultOptions[option] ? "on" : "off"
|
19
|
+
|
20
|
+
long = "--[no-]#{option}"
|
21
|
+
desc = "#{Runner::OptionDescriptions[option]} (default=#{default})"
|
22
|
+
|
23
|
+
on(long, desc) do |value|
|
24
|
+
options[:lint_options][option] = value
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
on("-h", "--help", "Show this message") do
|
29
|
+
STDERR.puts self.help
|
30
|
+
exit(-1)
|
31
|
+
end
|
32
|
+
|
33
|
+
on("-v", "--version", "Show version") do
|
34
|
+
STDERR.puts "#{self.program_name} version #{JSLintV8::Version::STRING}"
|
35
|
+
exit(-1)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/jslint-v8/rake_task.rb
CHANGED
@@ -18,6 +18,15 @@ module JSLintV8
|
|
18
18
|
# output stream for this task
|
19
19
|
attr_accessor :output_stream
|
20
20
|
|
21
|
+
# custom lint options for the task
|
22
|
+
attr_accessor :lint_options
|
23
|
+
|
24
|
+
# metaprogrammatically define accessors for each lint option expected
|
25
|
+
Runner::DefaultOptions.keys.each do |key|
|
26
|
+
define_method(key) { lint_options[key] }
|
27
|
+
define_method("#{key}=") {|value| lint_options[key] = value }
|
28
|
+
end
|
29
|
+
|
21
30
|
def initialize
|
22
31
|
# a default name
|
23
32
|
@name = "lint"
|
@@ -34,6 +43,9 @@ module JSLintV8
|
|
34
43
|
# by default use standard output for writing information
|
35
44
|
@output_stream = STDOUT
|
36
45
|
|
46
|
+
# by default provide no overridden lint options
|
47
|
+
@lint_options = {}
|
48
|
+
|
37
49
|
# if a block was given allow the block to call elements on this object
|
38
50
|
yield self if block_given?
|
39
51
|
|
@@ -72,7 +84,9 @@ module JSLintV8
|
|
72
84
|
private
|
73
85
|
|
74
86
|
def runner
|
75
|
-
JSLintV8::Runner.new(files_to_run)
|
87
|
+
runner = JSLintV8::Runner.new(files_to_run)
|
88
|
+
runner.jslint_options.merge!(lint_options)
|
89
|
+
runner
|
76
90
|
end
|
77
91
|
|
78
92
|
end
|
data/lib/jslint-v8/runner.rb
CHANGED
@@ -4,6 +4,100 @@ module JSLintV8
|
|
4
4
|
class Runner
|
5
5
|
JSLintLibraryFilename = File.expand_path("js/jslint.js", File.dirname(__FILE__))
|
6
6
|
|
7
|
+
DefaultOptions = {
|
8
|
+
"asi" => false,
|
9
|
+
"bitwise" => true,
|
10
|
+
"boss" => false,
|
11
|
+
"browser" => false,
|
12
|
+
"couch" => false,
|
13
|
+
"curly" => false,
|
14
|
+
"debug" => false,
|
15
|
+
"devel" => false,
|
16
|
+
"dojo" => false,
|
17
|
+
"eqeqeq" => true,
|
18
|
+
"eqnull" => false,
|
19
|
+
"es5" => false,
|
20
|
+
"evil" => false,
|
21
|
+
"expr" => false,
|
22
|
+
"forin" => false,
|
23
|
+
"globalstrict" => false,
|
24
|
+
"immed" => true,
|
25
|
+
"jquery" => false,
|
26
|
+
"latedef" => false,
|
27
|
+
"laxbreak" => false,
|
28
|
+
"loopfunc" => false,
|
29
|
+
"mootools" => false,
|
30
|
+
"newcap" => true,
|
31
|
+
"noarg" => false,
|
32
|
+
"node" => false,
|
33
|
+
"noempty" => false,
|
34
|
+
"nonew" => false,
|
35
|
+
"nomen" => true,
|
36
|
+
"onevar" => true,
|
37
|
+
"passfail" => false,
|
38
|
+
"plusplus" => true,
|
39
|
+
"prototypejs" => false,
|
40
|
+
"regexdash" => false,
|
41
|
+
"regexp" => true,
|
42
|
+
"rhino" => false,
|
43
|
+
"undef" => true,
|
44
|
+
"scripturl" => false,
|
45
|
+
"shadow" => false,
|
46
|
+
"strict" => false,
|
47
|
+
"sub" => false,
|
48
|
+
"supernew" => false,
|
49
|
+
"trailing" => false,
|
50
|
+
"white" => false,
|
51
|
+
"wsh" => false
|
52
|
+
}.freeze
|
53
|
+
|
54
|
+
OptionDescriptions = {
|
55
|
+
"asi" => "if automatic semicolon insertion should be tolerated",
|
56
|
+
"bitwise" => "if bitwise operators should not be allowed",
|
57
|
+
"boss" => "if advanced usage of assignments should be allowed",
|
58
|
+
"browser" => "if the standard browser globals should be predefined",
|
59
|
+
"couch" => "if CouchDB globals should be predefined",
|
60
|
+
"curly" => "if curly braces around blocks should be required (even in if/for/while)",
|
61
|
+
"debug" => "if debugger statements should be allowed",
|
62
|
+
"devel" => "if logging globals should be predefined (console, alert, etc.)",
|
63
|
+
"dojo" => "if Dojo Toolkit globals should be predefined",
|
64
|
+
"eqeqeq" => "if === should be required",
|
65
|
+
"eqnull" => "if == null comparisons should be tolerated",
|
66
|
+
"es5" => "if ES5 syntax should be allowed",
|
67
|
+
"evil" => "if eval should be allowed",
|
68
|
+
"expr" => "if ExpressionStatement should be allowed as Programs",
|
69
|
+
"forin" => "if for in statements must filter",
|
70
|
+
"globalstrict" => "if global \"use strict\"; should be allowed (also enables 'strict')",
|
71
|
+
"immed" => "if immediate invocations must be wrapped in parens",
|
72
|
+
"jquery" => "if jQuery globals should be predefined",
|
73
|
+
"latedef" => "if the use before definition should not be tolerated",
|
74
|
+
"laxbreak" => "if line breaks should not be checked",
|
75
|
+
"loopfunc" => "if functions should be allowed to be defined within loops",
|
76
|
+
"mootools" => "if MooTools globals should be predefined",
|
77
|
+
"newcap" => "if constructor names must be capitalized",
|
78
|
+
"noarg" => "if arguments.caller and arguments.callee should be disallowed",
|
79
|
+
"node" => "if the Node.js environment globals should be predefined",
|
80
|
+
"noempty" => "if empty blocks should be disallowed",
|
81
|
+
"nonew" => "if using `new` for side-effects should be disallowed",
|
82
|
+
"nomen" => "if names should be checked",
|
83
|
+
"onevar" => "if only one var statement per function should be allowed",
|
84
|
+
"passfail" => "if the scan should stop on first error",
|
85
|
+
"plusplus" => "if increment/decrement should not be allowed",
|
86
|
+
"prototypejs" => "if Prototype and Scriptaculous globals should be predefined",
|
87
|
+
"regexdash" => "if unescaped last dash (-) inside brackets should be tolerated",
|
88
|
+
"regexp" => "if the . should not be allowed in regexp literals",
|
89
|
+
"rhino" => "if the Rhino environment globals should be predefined",
|
90
|
+
"undef" => "if variables should be declared before used",
|
91
|
+
"scripturl" => "if script-targeted URLs should be tolerated",
|
92
|
+
"shadow" => "if variable shadowing should be tolerated",
|
93
|
+
"strict" => "require the \"use strict\"; pragma",
|
94
|
+
"sub" => "if all forms of subscript notation are tolerated",
|
95
|
+
"supernew" => "if `new function () { ... };` and `new Object;` should be tolerated",
|
96
|
+
"trailing" => "if trailing whitespace rules apply",
|
97
|
+
"white" => "if strict whitespace rules apply",
|
98
|
+
"wsh" => "if the Windows Scripting Host environment globals should be predefined",
|
99
|
+
}.freeze
|
100
|
+
|
7
101
|
attr_reader :file_list
|
8
102
|
|
9
103
|
def initialize(files)
|
@@ -63,19 +157,7 @@ module JSLintV8
|
|
63
157
|
end
|
64
158
|
|
65
159
|
def jslint_options
|
66
|
-
|
67
|
-
"bitwise" => true,
|
68
|
-
"eqeqeq" => true,
|
69
|
-
"immed" => true,
|
70
|
-
"newcap" => true,
|
71
|
-
"nomen" => true,
|
72
|
-
"onevar" => true,
|
73
|
-
"plusplus" => true,
|
74
|
-
"regexp" => true,
|
75
|
-
"rhino" => true,
|
76
|
-
"undef" => true,
|
77
|
-
"white" => true
|
78
|
-
}
|
160
|
+
@jslint_options ||= DefaultOptions.dup
|
79
161
|
end
|
80
162
|
|
81
163
|
end
|
data/lib/jslint-v8/version.rb
CHANGED
data/test/test_cli.rb
CHANGED
@@ -9,10 +9,35 @@ class TestCli < Test::Unit::TestCase
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_empty_args
|
12
|
-
|
12
|
+
# capture standard error by redirecting it to standard out
|
13
|
+
result = `#{Executable} 2>&1`
|
13
14
|
|
14
|
-
|
15
|
-
assert_equal
|
15
|
+
assert_match /^Usage/, result
|
16
|
+
assert_equal 255, $?.exitstatus
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_version_output
|
20
|
+
# capture standard error by redirecting it to standard out
|
21
|
+
result = `#{Executable} -v 2>&1`
|
22
|
+
|
23
|
+
assert_equal erb_fixture("version-output"), result
|
24
|
+
assert_equal 255, $?.exitstatus
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_help_output
|
28
|
+
# capture standard error by redirecting it to standard out
|
29
|
+
result = `#{Executable} -h foo.js bar.js baz.js 2>&1`
|
30
|
+
|
31
|
+
assert_match /^Usage/, result
|
32
|
+
assert_equal 255, $?.exitstatus
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_only_options_given
|
36
|
+
# capture standard error by redirecting it to standard out
|
37
|
+
result = `#{Executable} --browser --jquery 2>&1`
|
38
|
+
|
39
|
+
assert_match /^Usage/, result
|
40
|
+
assert_equal 255, $?.exitstatus
|
16
41
|
end
|
17
42
|
|
18
43
|
def test_valid
|
data/test/test_runner.rb
CHANGED
@@ -43,6 +43,17 @@ class TestRunner < Test::Unit::TestCase
|
|
43
43
|
assert_equal @runner.runtime.object_id, first.object_id
|
44
44
|
end
|
45
45
|
|
46
|
+
def test_overrideable_options
|
47
|
+
# have same values as default options
|
48
|
+
assert_equal @runner.jslint_options, JSLintV8::Runner::DefaultOptions
|
49
|
+
|
50
|
+
# but not be the options
|
51
|
+
assert_not_equal @runner.jslint_options.object_id, JSLintV8::Runner::DefaultOptions.object_id
|
52
|
+
|
53
|
+
# but be memoized
|
54
|
+
assert_equal @runner.jslint_options.object_id, @runner.jslint_options.object_id
|
55
|
+
end
|
56
|
+
|
46
57
|
def test_jslint_function_proxy
|
47
58
|
assert_not_nil @runner.jslint_function
|
48
59
|
end
|
data/test/test_task.rb
CHANGED
@@ -52,23 +52,38 @@ class TestTask < Test::Unit::TestCase
|
|
52
52
|
assert_equal STDOUT, task.output_stream
|
53
53
|
end
|
54
54
|
|
55
|
+
def test_default_lint_options
|
56
|
+
task = JSLintV8::RakeTask.new
|
57
|
+
|
58
|
+
assert_equal({}, task.lint_options)
|
59
|
+
end
|
60
|
+
|
55
61
|
def test_creation_block
|
56
62
|
tempfile = Tempfile.new("foo")
|
57
63
|
|
58
64
|
task = JSLintV8::RakeTask.new do |task|
|
59
65
|
task.name = "foo"
|
66
|
+
|
60
67
|
task.description = "Points out the bad codezzzz"
|
68
|
+
|
61
69
|
task.include_pattern = "js/**/*.js"
|
62
70
|
task.exclude_pattern = "js/**/*.txt"
|
71
|
+
|
63
72
|
task.output_stream = tempfile
|
73
|
+
|
74
|
+
task.browser = true
|
75
|
+
task.strict = true
|
64
76
|
end
|
65
77
|
|
66
78
|
rake_task = Rake.application.lookup("foo")
|
67
79
|
|
80
|
+
expected_options = {"browser" => true, "strict" => true}
|
81
|
+
|
68
82
|
assert_equal "foo", rake_task.name
|
69
83
|
assert_equal "Points out the bad codezzzz", rake_task.comment
|
70
84
|
assert_equal "js/**/*.js", task.include_pattern
|
71
85
|
assert_equal "js/**/*.txt", task.exclude_pattern
|
86
|
+
assert_equal expected_options, task.lint_options
|
72
87
|
assert_equal tempfile.object_id, task.output_stream.object_id
|
73
88
|
end
|
74
89
|
|
@@ -83,6 +98,19 @@ class TestTask < Test::Unit::TestCase
|
|
83
98
|
assert_equal expected_files, task.files_to_run
|
84
99
|
end
|
85
100
|
|
101
|
+
def test_custom_lint_options
|
102
|
+
task = JSLintV8::RakeTask.new do |task|
|
103
|
+
task.browser = true
|
104
|
+
task.evil = true
|
105
|
+
end
|
106
|
+
|
107
|
+
runner = task.send(:runner)
|
108
|
+
|
109
|
+
assert_equal true, runner.jslint_options["browser"]
|
110
|
+
assert_equal true, runner.jslint_options["evil"]
|
111
|
+
assert_equal false, runner.jslint_options["rhino"]
|
112
|
+
end
|
113
|
+
|
86
114
|
def test_valid_output
|
87
115
|
result = String.new
|
88
116
|
|
metadata
CHANGED
@@ -1,131 +1,107 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: jslint-v8
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 1.0.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- William Howard
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: therubyracer
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &71601450 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
18
|
+
requirements:
|
26
19
|
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 51
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 9
|
32
|
-
- 4
|
20
|
+
- !ruby/object:Gem::Version
|
33
21
|
version: 0.9.4
|
34
22
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: rake
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: *71601450
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &71601100 !ruby/object:Gem::Requirement
|
40
28
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
48
33
|
type: :development
|
49
|
-
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: test-unit
|
52
34
|
prerelease: false
|
53
|
-
|
35
|
+
version_requirements: *71601100
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: test-unit
|
38
|
+
requirement: &71600860 !ruby/object:Gem::Requirement
|
54
39
|
none: false
|
55
|
-
requirements:
|
56
|
-
- -
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
segments:
|
60
|
-
- 0
|
61
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
62
44
|
type: :development
|
63
|
-
|
64
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *71600860
|
47
|
+
description: Ruby gem wrapper for a jslint cli. Uses the The Ruby Racer library for
|
48
|
+
performance reasons targeted for usage in CI environments and backed up with a full
|
49
|
+
test suite.
|
65
50
|
email: whoward.tke@gmail.com
|
66
|
-
executables:
|
51
|
+
executables:
|
67
52
|
- jslint-v8
|
68
53
|
extensions: []
|
69
|
-
|
70
|
-
extra_rdoc_files:
|
54
|
+
extra_rdoc_files:
|
71
55
|
- README.markdown
|
72
|
-
files:
|
56
|
+
files:
|
73
57
|
- lib/jslint-v8/formatter.rb
|
74
|
-
- lib/jslint-v8/runner.rb
|
75
58
|
- lib/jslint-v8/rake_task.rb
|
76
|
-
- lib/jslint-v8/lint_error.rb
|
77
59
|
- lib/jslint-v8/version.rb
|
60
|
+
- lib/jslint-v8/runner.rb
|
61
|
+
- lib/jslint-v8/option_parser.rb
|
62
|
+
- lib/jslint-v8/lint_error.rb
|
78
63
|
- lib/jslint-v8.rb
|
79
64
|
- lib/jslint-v8/js/jslint.js
|
80
65
|
- Gemfile
|
81
66
|
- Gemfile.lock
|
82
67
|
- bin/jslint-v8
|
83
68
|
- README.markdown
|
84
|
-
- test/test_task.rb
|
85
|
-
- test/test_lint_error.rb
|
86
|
-
- test/helper.rb
|
87
69
|
- test/test_runner.rb
|
88
|
-
- test/suite.rb
|
89
|
-
- test/test_formatter.rb
|
90
70
|
- test/test_cli.rb
|
71
|
+
- test/helper.rb
|
72
|
+
- test/test_formatter.rb
|
73
|
+
- test/test_task.rb
|
74
|
+
- test/suite.rb
|
75
|
+
- test/test_lint_error.rb
|
91
76
|
homepage: http://github.com/whoward/jslint-v8
|
92
77
|
licenses: []
|
93
|
-
|
94
78
|
post_install_message:
|
95
79
|
rdoc_options: []
|
96
|
-
|
97
|
-
require_paths:
|
80
|
+
require_paths:
|
98
81
|
- lib
|
99
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
83
|
none: false
|
101
|
-
requirements:
|
102
|
-
- -
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
|
105
|
-
|
106
|
-
- 0
|
107
|
-
version: "0"
|
108
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
89
|
none: false
|
110
|
-
requirements:
|
111
|
-
- -
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
|
114
|
-
segments:
|
115
|
-
- 0
|
116
|
-
version: "0"
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
117
94
|
requirements: []
|
118
|
-
|
119
95
|
rubyforge_project:
|
120
|
-
rubygems_version: 1.8.
|
96
|
+
rubygems_version: 1.8.10
|
121
97
|
signing_key:
|
122
98
|
specification_version: 3
|
123
99
|
summary: JSLint CLI and rake tasks via therubyracer (JavaScript V8 gem)
|
124
|
-
test_files:
|
125
|
-
- test/test_task.rb
|
126
|
-
- test/test_lint_error.rb
|
127
|
-
- test/helper.rb
|
100
|
+
test_files:
|
128
101
|
- test/test_runner.rb
|
129
|
-
- test/suite.rb
|
130
|
-
- test/test_formatter.rb
|
131
102
|
- test/test_cli.rb
|
103
|
+
- test/helper.rb
|
104
|
+
- test/test_formatter.rb
|
105
|
+
- test/test_task.rb
|
106
|
+
- test/suite.rb
|
107
|
+
- test/test_lint_error.rb
|