Sha256: 7debc9a39300e3284d4bce9eb6db061b0d16cf1abad7f6898374b6bf757e4930

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

module Redcar
  module SyntaxCheck
    class JavaScript < Checker
      supported_grammars  "JavaScript", "JavaScript (Rails)",
                          "jQuery (JavaScript)", "HTML"

      def jslint_path
        File.join(File.dirname(__FILE__),'..','..','vendor','jslint.js')
      end

      def rhino_path
        File.join(File.expand_path('../../../vendor/rhino1_7R3.jar', __FILE__))
      end

      def main_method
        "org.mozilla.javascript.tools.shell.Main"
      end

      def check(*args)
        path = manifest_path(doc)
        name = File.basename(path)
        if t = JavaScript.thread and t.alive?
          if t[:doc] and t[:doc] == doc
            t.exit
            SyntaxCheck.remove_syntax_error_annotations(doc.edit_view)
          end
        end
        JavaScript.thread=Thread.new do
          SyntaxCheck.remove_syntax_error_annotations(doc.edit_view)
          Thread.current[:doc] = doc
          begin
            output = `java -cp #{rhino_path} #{main_method} #{jslint_path} #{path}`
            output.each_line do |line|
              if line =~ /Lint at line (\d+) character (\d+): (.*)/
                SyntaxCheck::Error.new(doc, $1.to_i-1, $3).annotate
                sleep 1
              end
            end
          rescue Object => e
            SyntaxCheck.message(
            "An error occurred while parsing #{name}: #{e.message}",:error)
          end
        end
      end

      private

      def self.thread=(thread)
        @thread=thread
      end

      def self.thread
        @thread
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
redcar-javascript-0.2 lib/syntax_check/javascript.rb
redcar-javascript-0.1-java lib/syntax_check/javascript.rb