module Syntaxer

@author Artyom Kramarenko

Constants

DEFAULT_FILES_MASK
LanguageDefinition
SYNTAXER_CONFIG_FILE_NAME
SYNTAXER_RULES_FILE

Attributes

hook[R]
jslint[R]
reader[R]
repository[R]
results[R]
root_path[R]
warnings[R]

Public Class Methods

check_syntax(options = {}) click to toggle source

Main method to be used for syntax checking.

@return [Boolean]

@param [Hash] options the options to perform syntax checking @option options [String] :root_path (Dir.getwd) The starting point, which will be used for all relative path's @option options [String] :languages (:all) Type of languages to be used in checking @option options [String] :repository (git|svn) Type of repository @option options [String] :config_file(SYNTAXER_RULES_FILE) File with syntax rules and language definitions

# File lib/syntaxer.rb, line 45
def check_syntax(options = {})
  @root_path = options[:root_path]
  @warnings = options[:warnings]
  @hook = options[:hook]
  @jslint = options[:jslint]
  Printer.quite = options[:quite] || false
  Printer.loud = options[:loud] || false
  
  @reader = Reader::DSLReader.load(options[:config_file])

  if @jslint # if jslint option passed set from command line we have to add new rule with indicated dir
    rule = LanguageDefinition.new(:javascript, %w{js}, nil, [@jslint+"*", @jslint+"**/*"], nil, nil, nil, true, true)
    rule.exec_rule = Runner.javascript.call
    @reader.add_rule rule
  end

  @repository = Repository.factory(@root_path, options[:repository]) if options[:repository]

  $stdmyout = StringIO.new
  checker = Checker.process(self)
  Printer.print_result checker

  exit(1) unless checker.error_files.empty? && $stdmyout.string.empty?
end
configure() { |self| ... } click to toggle source
# File lib/syntaxer.rb, line 31
def configure
  yield(self) if block_given?
end
make_hook(options) click to toggle source

This method generate and put hook to .git/hooks

@return [Nil]

@see Syntaxer#check_syntax @raise ArgumentError if no repository indicated @raise ArgumentError if SVN is indicated. SVN is not supported yet.

# File lib/syntaxer.rb, line 78
def make_hook(options)
  @root_path = options[:root_path]
  raise ArgumentError, 'Indicate repository type' unless options.include?(:repository)
  raise ArgumentError, "SVN is temporarily not supported" if options[:repository].to_sym == :svn

  hook_file = "#{@root_path}/.git/hooks/pre-commit"
  hook_string = 'syntaxer '
  
  if options[:restore] && File.exist?(File.join(@root_path,'.syntaxer'))
    hook_string += File.open(File.join(@root_path,'.syntaxer')).read
  else
    repo = Repository.factory(@root_path, options[:repository])
    hook_string += "-r git --hook"
    hook_string += " -c config/syntaxer.rb" if options[:rails]
    hook_string += " -c #{options[:config_file]}" unless options[:config_file].nil?
  end
  
  File.open(hook_file, 'w') do |f|
    f.puts hook_string
  end
  File.chmod(0755, hook_file)

  # save syntaxer options
  File.open(File.join(options[:root_path],'.syntaxer'), 'w') do |f|
    f.write(hook_string.gsub('syntaxer ',''))
  end

rescue Exception => e
  puts e.message.color(:red)
  raise e
end
wizzard(options) click to toggle source
# File lib/syntaxer.rb, line 110
def wizzard(options)
  Wizzard.start
end