Module: Syntaxer

Defined in:
lib/syntaxer/reader.rb,
lib/syntaxer.rb,
lib/syntaxer/runner.rb,
lib/syntaxer/writer.rb,
lib/syntaxer/checker.rb,
lib/syntaxer/printer.rb,
lib/syntaxer/railtie.rb,
lib/syntaxer/wizzard.rb,
lib/syntaxer/repository.rb,
lib/syntaxer/file_status.rb,
lib/syntaxer/progress_bar.rb,
lib/syntaxer/language_definition.rb

Overview

Author:

  • Artyom Kramarenko

Defined Under Namespace

Modules: Reader, Runners Classes: Checker, FileStatus, Git, GitRepositoryError, LanguageDefinition, LanguageDefinitionException, LanguageRules, PlainChecker, Printer, ProgressBar, Railtie, RepoChecker, Repository, RepositoryError, Runner, Svn, SvnRepositoryError, Wizzard, Writer

Constant Summary collapse

DEFAULT_FILES_MASK =
"**/*"
SYNTAXER_RULES_FILE =
File.join(File.dirname(__FILE__), "..", "syntaxer_rules.dist.rb")
SYNTAXER_CONFIG_FILE_NAME =
"syntaxer.rb"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.hookObject (readonly)

Returns the value of attribute hook.



29
30
31
# File 'lib/syntaxer.rb', line 29

def hook
  @hook
end

.jslintObject (readonly)

Returns the value of attribute jslint.



29
30
31
# File 'lib/syntaxer.rb', line 29

def jslint
  @jslint
end

.readerObject (readonly)

Returns the value of attribute reader.



29
30
31
# File 'lib/syntaxer.rb', line 29

def reader
  @reader
end

.repositoryObject (readonly)

Returns the value of attribute repository.



29
30
31
# File 'lib/syntaxer.rb', line 29

def repository
  @repository
end

.resultsObject (readonly)

Returns the value of attribute results.



29
30
31
# File 'lib/syntaxer.rb', line 29

def results
  @results
end

.root_pathObject (readonly)

Returns the value of attribute root_path.



29
30
31
# File 'lib/syntaxer.rb', line 29

def root_path
  @root_path
end

.warningsObject (readonly)

Returns the value of attribute warnings.



29
30
31
# File 'lib/syntaxer.rb', line 29

def warnings
  @warnings
end

Class Method Details

.check_syntax(options = {}) ⇒ Boolean

Main method to be used for syntax checking.

Parameters:

  • options (Hash) (defaults to: {})

    the options to perform syntax checking

Options Hash (options):

  • :root_path (String) — default: Dir.getwd

    The starting point, which will be used for all relative path’s

  • :languages (String) — default: :all

    Type of languages to be used in checking

  • :repository (String) — default: git|svn

    Type of repository

  • :config_file(SYNTAXER_RULES_FILE) (String)

    File with syntax rules and language definitions

Returns:

  • (Boolean)


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 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| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:

  • _self (Syntaxer)

    the object that the method was called on



31
32
33
# File 'lib/syntaxer.rb', line 31

def configure
  yield(self) if block_given?
end

.make_hook(options) ⇒ Nil

This method generate and put hook to .git/hooks

Returns:

  • (Nil)

Raises:

  • ArgumentError if no repository indicated

  • ArgumentError if SVN is indicated. SVN is not supported yet.

See Also:



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# 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) ⇒ Object



110
111
112
# File 'lib/syntaxer.rb', line 110

def wizzard(options)
  Wizzard.start
end