jshintrb 0.1.4 → 0.1.6
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.
- data/.gitignore +5 -5
- data/.gitmodules +0 -0
- data/.travis.yml +19 -19
- data/Gemfile +0 -0
- data/README.md +73 -73
- data/Rakefile +16 -10
- data/jshintrb.gemspec +26 -27
- data/lib/js/jshint.js +4523 -4397
- data/lib/jshintrb/jshinttask.rb +84 -84
- data/lib/jshintrb/lint.rb +64 -64
- data/lib/jshintrb/reporter/default.rb +29 -29
- data/lib/jshintrb/version.rb +2 -1
- data/lib/jshintrb.rb +0 -0
- data/spec/jshintrb_spec.rb +28 -28
- metadata +91 -56
data/lib/jshintrb/jshinttask.rb
CHANGED
@@ -1,84 +1,84 @@
|
|
1
|
-
# Define a task library for running JSHint contexts.
|
2
|
-
|
3
|
-
require 'rake'
|
4
|
-
require 'rake/tasklib'
|
5
|
-
|
6
|
-
require 'jshintrb'
|
7
|
-
|
8
|
-
module Jshintrb
|
9
|
-
|
10
|
-
class JshintTask < ::Rake::TaskLib
|
11
|
-
# Name of JSHint task. (default is :jshint)
|
12
|
-
attr_accessor :name
|
13
|
-
|
14
|
-
# Glob pattern to match JavaScript files. (default is './**/*.js')
|
15
|
-
attr_accessor :pattern
|
16
|
-
|
17
|
-
# options
|
18
|
-
attr_accessor :options
|
19
|
-
|
20
|
-
# Whether or not to fail Rake when an error occurs (typically when Jshint check fail).
|
21
|
-
# Defaults to true.
|
22
|
-
attr_accessor :fail_on_error
|
23
|
-
|
24
|
-
# Explicitly define the list of JavaScript files to be linted.
|
25
|
-
# +js_files+ is expected to be an array of file names (a
|
26
|
-
# FileList is acceptable). If both +pattern+ and +js_files+ are
|
27
|
-
# used, then the list of JavaScritp files is the union of the two.
|
28
|
-
attr_accessor :js_files
|
29
|
-
|
30
|
-
attr_accessor :exclude_pattern
|
31
|
-
|
32
|
-
attr_accessor :exclude_js_files
|
33
|
-
|
34
|
-
# Defines a new task, using the name +name+.
|
35
|
-
def initialize(name=:jshint)
|
36
|
-
@name = name
|
37
|
-
@pattern = nil
|
38
|
-
@js_files = nil
|
39
|
-
@exclude_pattern = nil
|
40
|
-
@exclude_js_files = nil
|
41
|
-
@options = nil
|
42
|
-
@fail_on_error = true
|
43
|
-
|
44
|
-
yield self if block_given?
|
45
|
-
@pattern = './**/*.js' if pattern.nil? && js_files.nil?
|
46
|
-
define
|
47
|
-
end
|
48
|
-
|
49
|
-
def define # :nodoc:
|
50
|
-
|
51
|
-
actual_name = Hash === name ? name.keys.first : name
|
52
|
-
unless ::Rake.application.last_comment
|
53
|
-
desc "Run JShint"
|
54
|
-
end
|
55
|
-
task name do
|
56
|
-
unless js_file_list.empty?
|
57
|
-
result = Jshintrb::report(js_file_list, @options, STDERR)
|
58
|
-
if result.size > 0
|
59
|
-
abort("JSHint check failed") if fail_on_error
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
self
|
65
|
-
end
|
66
|
-
|
67
|
-
def evaluate(o) # :nodoc:
|
68
|
-
case o
|
69
|
-
when Proc then o.call
|
70
|
-
else o
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def js_file_list # :nodoc:
|
75
|
-
result = []
|
76
|
-
result += js_files.to_a if js_files
|
77
|
-
result += FileList[ pattern ].to_a if pattern
|
78
|
-
result -= exclude_js_files.to_a if exclude_js_files
|
79
|
-
result -= FileList[ exclude_pattern ].to_a if exclude_pattern
|
80
|
-
FileList[result]
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
1
|
+
# Define a task library for running JSHint contexts.
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
require 'rake/tasklib'
|
5
|
+
|
6
|
+
require 'jshintrb'
|
7
|
+
|
8
|
+
module Jshintrb
|
9
|
+
|
10
|
+
class JshintTask < ::Rake::TaskLib
|
11
|
+
# Name of JSHint task. (default is :jshint)
|
12
|
+
attr_accessor :name
|
13
|
+
|
14
|
+
# Glob pattern to match JavaScript files. (default is './**/*.js')
|
15
|
+
attr_accessor :pattern
|
16
|
+
|
17
|
+
# options
|
18
|
+
attr_accessor :options
|
19
|
+
|
20
|
+
# Whether or not to fail Rake when an error occurs (typically when Jshint check fail).
|
21
|
+
# Defaults to true.
|
22
|
+
attr_accessor :fail_on_error
|
23
|
+
|
24
|
+
# Explicitly define the list of JavaScript files to be linted.
|
25
|
+
# +js_files+ is expected to be an array of file names (a
|
26
|
+
# FileList is acceptable). If both +pattern+ and +js_files+ are
|
27
|
+
# used, then the list of JavaScritp files is the union of the two.
|
28
|
+
attr_accessor :js_files
|
29
|
+
|
30
|
+
attr_accessor :exclude_pattern
|
31
|
+
|
32
|
+
attr_accessor :exclude_js_files
|
33
|
+
|
34
|
+
# Defines a new task, using the name +name+.
|
35
|
+
def initialize(name=:jshint)
|
36
|
+
@name = name
|
37
|
+
@pattern = nil
|
38
|
+
@js_files = nil
|
39
|
+
@exclude_pattern = nil
|
40
|
+
@exclude_js_files = nil
|
41
|
+
@options = nil
|
42
|
+
@fail_on_error = true
|
43
|
+
|
44
|
+
yield self if block_given?
|
45
|
+
@pattern = './**/*.js' if pattern.nil? && js_files.nil?
|
46
|
+
define
|
47
|
+
end
|
48
|
+
|
49
|
+
def define # :nodoc:
|
50
|
+
|
51
|
+
actual_name = Hash === name ? name.keys.first : name
|
52
|
+
unless ::Rake.application.last_comment
|
53
|
+
desc "Run JShint"
|
54
|
+
end
|
55
|
+
task name do
|
56
|
+
unless js_file_list.empty?
|
57
|
+
result = Jshintrb::report(js_file_list, @options, STDERR)
|
58
|
+
if result.size > 0
|
59
|
+
abort("JSHint check failed") if fail_on_error
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
self
|
65
|
+
end
|
66
|
+
|
67
|
+
def evaluate(o) # :nodoc:
|
68
|
+
case o
|
69
|
+
when Proc then o.call
|
70
|
+
else o
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def js_file_list # :nodoc:
|
75
|
+
result = []
|
76
|
+
result += js_files.to_a if js_files
|
77
|
+
result += FileList[ pattern ].to_a if pattern
|
78
|
+
result -= exclude_js_files.to_a if exclude_js_files
|
79
|
+
result -= FileList[ exclude_pattern ].to_a if exclude_pattern
|
80
|
+
FileList[result]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
data/lib/jshintrb/lint.rb
CHANGED
@@ -1,64 +1,64 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
require "execjs"
|
4
|
-
require "multi_json"
|
5
|
-
|
6
|
-
module Jshintrb
|
7
|
-
|
8
|
-
class Lint
|
9
|
-
Error = ExecJS::Error
|
10
|
-
|
11
|
-
# Default options for compilation
|
12
|
-
DEFAULTS = {
|
13
|
-
:bitwise => true,
|
14
|
-
:curly => true,
|
15
|
-
:eqeqeq => true,
|
16
|
-
:forin => true,
|
17
|
-
:immed => true,
|
18
|
-
:latedef => true,
|
19
|
-
:newcap => true,
|
20
|
-
:noarg => true,
|
21
|
-
:noempty => true,
|
22
|
-
:nonew => true,
|
23
|
-
:plusplus => true,
|
24
|
-
:regexp => true,
|
25
|
-
:undef => true,
|
26
|
-
:strict => true,
|
27
|
-
:trailing => true,
|
28
|
-
:browser => true
|
29
|
-
}
|
30
|
-
|
31
|
-
SourcePath = File.expand_path("../../js/jshint.js", __FILE__)
|
32
|
-
|
33
|
-
def initialize(options = nil)
|
34
|
-
|
35
|
-
if options == :defaults then
|
36
|
-
@options = DEFAULTS.dup
|
37
|
-
elsif options.instance_of? Hash then
|
38
|
-
@options = options.dup
|
39
|
-
# @options = DEFAULTS.merge(options)
|
40
|
-
elsif options.nil?
|
41
|
-
@options = nil
|
42
|
-
else
|
43
|
-
raise 'Unsupported option for Jshintrb: ' + options.to_s
|
44
|
-
end
|
45
|
-
|
46
|
-
@context = ExecJS.compile(File.open(SourcePath, "r:UTF-8").read)
|
47
|
-
end
|
48
|
-
|
49
|
-
def lint(source)
|
50
|
-
source = source.respond_to?(:read) ? source.read : source.to_s
|
51
|
-
|
52
|
-
js = []
|
53
|
-
if @options.nil? then
|
54
|
-
js << "JSHINT(#{MultiJson.dump(source)});"
|
55
|
-
else
|
56
|
-
js << "JSHINT(#{MultiJson.dump(source)}, #{MultiJson.dump(@options)});"
|
57
|
-
end
|
58
|
-
js << "return JSHINT.errors;"
|
59
|
-
|
60
|
-
@context.exec js.join("\n")
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
end
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "execjs"
|
4
|
+
require "multi_json"
|
5
|
+
|
6
|
+
module Jshintrb
|
7
|
+
|
8
|
+
class Lint
|
9
|
+
Error = ExecJS::Error
|
10
|
+
|
11
|
+
# Default options for compilation
|
12
|
+
DEFAULTS = {
|
13
|
+
:bitwise => true,
|
14
|
+
:curly => true,
|
15
|
+
:eqeqeq => true,
|
16
|
+
:forin => true,
|
17
|
+
:immed => true,
|
18
|
+
:latedef => true,
|
19
|
+
:newcap => true,
|
20
|
+
:noarg => true,
|
21
|
+
:noempty => true,
|
22
|
+
:nonew => true,
|
23
|
+
:plusplus => true,
|
24
|
+
:regexp => true,
|
25
|
+
:undef => true,
|
26
|
+
:strict => true,
|
27
|
+
:trailing => true,
|
28
|
+
:browser => true
|
29
|
+
}
|
30
|
+
|
31
|
+
SourcePath = File.expand_path("../../js/jshint.js", __FILE__)
|
32
|
+
|
33
|
+
def initialize(options = nil)
|
34
|
+
|
35
|
+
if options == :defaults then
|
36
|
+
@options = DEFAULTS.dup
|
37
|
+
elsif options.instance_of? Hash then
|
38
|
+
@options = options.dup
|
39
|
+
# @options = DEFAULTS.merge(options)
|
40
|
+
elsif options.nil?
|
41
|
+
@options = nil
|
42
|
+
else
|
43
|
+
raise 'Unsupported option for Jshintrb: ' + options.to_s
|
44
|
+
end
|
45
|
+
|
46
|
+
@context = ExecJS.compile(File.open(SourcePath, "r:UTF-8").read)
|
47
|
+
end
|
48
|
+
|
49
|
+
def lint(source)
|
50
|
+
source = source.respond_to?(:read) ? source.read : source.to_s
|
51
|
+
|
52
|
+
js = []
|
53
|
+
if @options.nil? then
|
54
|
+
js << "JSHINT(#{MultiJson.dump(source)});"
|
55
|
+
else
|
56
|
+
js << "JSHINT(#{MultiJson.dump(source)}, #{MultiJson.dump(@options)});"
|
57
|
+
end
|
58
|
+
js << "return JSHINT.errors;"
|
59
|
+
|
60
|
+
@context.exec js.join("\n")
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
@@ -1,30 +1,30 @@
|
|
1
|
-
module Jshintrb
|
2
|
-
module Reporter
|
3
|
-
class Default
|
4
|
-
|
5
|
-
def format errors, file
|
6
|
-
result = ''
|
7
|
-
indent = ''
|
8
|
-
if file then
|
9
|
-
indent = ' '
|
10
|
-
end
|
11
|
-
|
12
|
-
errors.each do |error|
|
13
|
-
if error.nil? then
|
14
|
-
result += indent + 'fatal error'
|
15
|
-
else
|
16
|
-
result += indent + 'line ' + error["line"].to_s + ', col ' +
|
17
|
-
error["character"].to_s + ', ' + error["reason"].to_s + "\n"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
if file && result.size > 0 then
|
22
|
-
result = 'file: ' + file + "\n" + result
|
23
|
-
end
|
24
|
-
|
25
|
-
result
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
end
|
1
|
+
module Jshintrb
|
2
|
+
module Reporter
|
3
|
+
class Default
|
4
|
+
|
5
|
+
def format errors, file
|
6
|
+
result = ''
|
7
|
+
indent = ''
|
8
|
+
if file then
|
9
|
+
indent = ' '
|
10
|
+
end
|
11
|
+
|
12
|
+
errors.each do |error|
|
13
|
+
if error.nil? then
|
14
|
+
result += indent + 'fatal error'
|
15
|
+
else
|
16
|
+
result += indent + 'line ' + error["line"].to_s + ', col ' +
|
17
|
+
error["character"].to_s + ', ' + error["reason"].to_s + "\n"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
if file && result.size > 0 then
|
22
|
+
result = 'file: ' + file + "\n" + result
|
23
|
+
end
|
24
|
+
|
25
|
+
result
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
30
|
end
|
data/lib/jshintrb/version.rb
CHANGED
data/lib/jshintrb.rb
CHANGED
File without changes
|
data/spec/jshintrb_spec.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require "jshintrb"
|
3
|
-
|
4
|
-
def gen_file source, option, value
|
5
|
-
"/*jshint " + option.to_s + ": " + value.to_s + "*/\n" + source
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "Jshintrb" do
|
9
|
-
|
10
|
-
it "support options" do
|
11
|
-
options = {
|
12
|
-
:bitwise => "var a = 1|1;",
|
13
|
-
:curly => "while (true)\n var a = 'a';",
|
1
|
+
# encoding: UTF-8
|
2
|
+
require "jshintrb"
|
3
|
+
|
4
|
+
def gen_file source, option, value
|
5
|
+
"/*jshint " + option.to_s + ": " + value.to_s + "*/\n" + source
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "Jshintrb" do
|
9
|
+
|
10
|
+
it "support options" do
|
11
|
+
options = {
|
12
|
+
:bitwise => "var a = 1|1;",
|
13
|
+
:curly => "while (true)\n var a = 'a';",
|
14
14
|
# :eqeqeq => true,
|
15
15
|
# :forin => true,
|
16
16
|
# :immed => true,
|
@@ -24,18 +24,18 @@ describe "Jshintrb" do
|
|
24
24
|
:undef => "if (a == 'a') { var b = 'b'; }"
|
25
25
|
# :strict => true,
|
26
26
|
# :trailing => true,
|
27
|
-
# :browser => true
|
28
|
-
}
|
29
|
-
|
30
|
-
options.each do |option, source|
|
31
|
-
Jshintrb.lint(source, option => false).length.should eq 0
|
32
|
-
Jshintrb.lint(source, option => true).length.should eq 1
|
33
|
-
end
|
34
|
-
|
35
|
-
options.each do |option, source|
|
36
|
-
Jshintrb.lint(gen_file(source, option, false)).length.should eq 0
|
37
|
-
Jshintrb.lint(gen_file(source, option, true)).length.should eq 1
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
27
|
+
# :browser => true
|
28
|
+
}
|
29
|
+
|
30
|
+
options.each do |option, source|
|
31
|
+
Jshintrb.lint(source, option => false).length.should eq 0
|
32
|
+
Jshintrb.lint(source, option => true).length.should eq 1
|
33
|
+
end
|
34
|
+
|
35
|
+
options.each do |option, source|
|
36
|
+
Jshintrb.lint(gen_file(source, option, false)).length.should eq 0
|
37
|
+
Jshintrb.lint(gen_file(source, option, true)).length.should eq 1
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
metadata
CHANGED
@@ -1,68 +1,98 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: jshintrb
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 6
|
9
|
+
version: 0.1.6
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- stereobooster
|
9
13
|
autorequire:
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
|
17
|
+
date: 2012-05-07 00:00:00 +03:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rspec
|
16
|
-
requirement: &
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
type: :development
|
31
|
+
prerelease: false
|
32
|
+
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: submodule
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
17
36
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
segments:
|
41
|
+
- 0
|
42
|
+
version: "0"
|
22
43
|
type: :development
|
23
44
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
-
- !ruby/object:Gem::Dependency
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
26
47
|
name: rake
|
27
|
-
requirement: &
|
48
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
28
49
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
55
|
+
version: "0"
|
33
56
|
type: :runtime
|
34
57
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
-
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: *id003
|
59
|
+
- !ruby/object:Gem::Dependency
|
37
60
|
name: multi_json
|
38
|
-
requirement: &
|
61
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
39
62
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
segments:
|
67
|
+
- 1
|
68
|
+
- 3
|
69
|
+
version: "1.3"
|
44
70
|
type: :runtime
|
45
71
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
- !ruby/object:Gem::Dependency
|
72
|
+
version_requirements: *id004
|
73
|
+
- !ruby/object:Gem::Dependency
|
48
74
|
name: execjs
|
49
|
-
requirement: &
|
75
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
50
76
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
segments:
|
81
|
+
- 0
|
82
|
+
version: "0"
|
55
83
|
type: :runtime
|
56
84
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
-
description: Ruby wrapper for JSHint. The main difference from jshint gem it does
|
59
|
-
|
60
|
-
email:
|
85
|
+
version_requirements: *id005
|
86
|
+
description: Ruby wrapper for JSHint. The main difference from jshint gem it does not depend on Java. Instead, it uses ExecJS
|
87
|
+
email:
|
61
88
|
- stereobooster@gmail.com
|
62
89
|
executables: []
|
90
|
+
|
63
91
|
extensions: []
|
92
|
+
|
64
93
|
extra_rdoc_files: []
|
65
|
-
|
94
|
+
|
95
|
+
files:
|
66
96
|
- .gitignore
|
67
97
|
- .gitmodules
|
68
98
|
- .travis.yml
|
@@ -77,34 +107,39 @@ files:
|
|
77
107
|
- lib/jshintrb/reporter/default.rb
|
78
108
|
- lib/jshintrb/version.rb
|
79
109
|
- spec/jshintrb_spec.rb
|
110
|
+
has_rdoc: true
|
80
111
|
homepage: https://github.com/stereobooster/jshintrb
|
81
112
|
licenses: []
|
113
|
+
|
82
114
|
post_install_message:
|
83
115
|
rdoc_options: []
|
84
|
-
|
116
|
+
|
117
|
+
require_paths:
|
85
118
|
- lib
|
86
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
120
|
none: false
|
88
|
-
requirements:
|
89
|
-
- -
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
|
92
|
-
segments:
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
hash: -591355473
|
125
|
+
segments:
|
93
126
|
- 0
|
94
|
-
|
95
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
version: "0"
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
129
|
none: false
|
97
|
-
requirements:
|
98
|
-
- -
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
segments:
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
hash: -591355473
|
134
|
+
segments:
|
102
135
|
- 0
|
103
|
-
|
136
|
+
version: "0"
|
104
137
|
requirements: []
|
105
|
-
|
106
|
-
|
138
|
+
|
139
|
+
rubyforge_project:
|
140
|
+
rubygems_version: 1.3.7
|
107
141
|
signing_key:
|
108
142
|
specification_version: 3
|
109
143
|
summary: Ruby wrapper for JSHint
|
110
144
|
test_files: []
|
145
|
+
|