Class: Jshintrb::Lint
- Inherits:
-
Object
- Object
- Jshintrb::Lint
- Defined in:
- lib/jshintrb/lint.rb
Constant Summary collapse
- Error =
ExecJS::Error
- DEFAULTS =
Default options for compilation
{ :bitwise => true, :curly => true, :eqeqeq => true, :forin => true, :immed => true, :latedef => true, :newcap => true, :noarg => true, :noempty => true, :nonew => true, :plusplus => true, :regexp => true, :undef => true, :strict => true, :trailing => true, :browser => true }
- SourcePath =
File.("../../js/jshint.js", __FILE__)
Instance Method Summary collapse
-
#initialize(options = nil, globals = nil) ⇒ Lint
constructor
A new instance of Lint.
- #lint(source) ⇒ Object
Constructor Details
#initialize(options = nil, globals = nil) ⇒ Lint
Returns a new instance of Lint.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/jshintrb/lint.rb', line 33 def initialize( = nil, globals = nil) if == :defaults then @options = DEFAULTS.dup elsif .instance_of? Hash then @options = .dup # @options = DEFAULTS.merge(options) elsif .nil? @options = nil else raise 'Unsupported option for Jshintrb: ' + .to_s end @globals = globals @context = ExecJS.compile(File.open(SourcePath, "r:UTF-8").read) end |
Instance Method Details
#lint(source) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/jshintrb/lint.rb', line 51 def lint(source) source = source.respond_to?(:read) ? source.read : source.to_s js = [] if @options.nil? and @globals.nil? then js << "JSHINT(#{MultiJson.dump(source)});" elsif @globals.nil? then js << "JSHINT(#{MultiJson.dump(source)}, #{MultiJson.dump(@options)});" else globals_hash = Hash[*@globals.product([false]).flatten] js << "JSHINT(#{MultiJson.dump(source)}, #{MultiJson.dump(@options)}, #{MultiJson.dump(globals_hash)});" end js << "return JSHINT.errors;" @context.exec js.join("\n") end |