Sha256: 2c1b792af5231ae79088293593b0aeca0496c427e96d9890cfda7caacd0336e0

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

module Distil

  LINT_COMMAND= "#{VENDOR_DIR}/jsl-0.3.0/bin/jsl"
  # LINT_COMMAND= "/Users/jeff/.gem/ruby/1.8/gems/distil-0.10.2/vendor/jsl-0.3.0/bin/jsl"
  
  class ValidateJsTask < Task

    include ErrorReporter
    
    option :jsl_conf, "#{LIB_DIR}/jsl.conf"
    option :global_export
    option :additional_globals
    
    def handles_file(file)
      return ["js"].include?(file.content_type)
    end

    def process_files(files)
      return if (!File.exists?(LINT_COMMAND))

      tmp= Tempfile.new("jsl.conf")
    
      conf_files= [ "jsl.conf",
                    "#{ENV['HOME']}/.jsl.conf",
                    jsl_conf
                  ]

      jsl_conf= conf_files.find { |f| File.exists?(f) }

      tmp << File.read(jsl_conf)
      tmp << "\n"

      tmp << "+define distil\n"
      
      if (global_export)
        tmp << "+define #{global_export}\n"
      end
      
      additional_globals.each { |g|
        tmp << "+define #{g}\n"
      }
      
      target.file_aliases.each { |original, full_path|
        next if !File.exist?(full_path)
        tmp << "+alias #{original} #{full_path}\n"
      }
      
      files.each { |f|
        next if !handles_file(f)
        tmp << "+process #{f}\n"
      }

      tmp.close()
      command= "#{LINT_COMMAND} -nologo -nofilelisting -conf #{tmp.path}"

      stdin, stdout, stderr= Open3.popen3(command)
      stdin.close
      output= stdout.read
      errors= stderr.read

      tmp.delete
    
      output= output.split("\n")
      summary= output.pop
      match= summary.match(/(\d+)\s+error\(s\), (\d+)\s+warning\(s\)/)
      if (match)
        @@error_count+= match[1].to_i
        @@warning_count+= match[2].to_i
      end
    
      output= output.join("\n")
    
      if (!output.empty?)
        puts output
        puts
      end

    end
    
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
distil-0.12.4 lib/distil/task/validate-js-task.rb