class Guard::ScssLint
Attributes
config[R]
options[R]
Public Class Methods
new(options = {})
click to toggle source
Calls superclass method
# File lib/guard/scss_lint.rb, line 14 def initialize(options = {}) super @options = { all_on_start: true }.merge(options) load_config @scss_lint_runner = SCSSLint::Runner.new @config @failed_paths = [] end
non_namespaced_name()
click to toggle source
# File lib/guard/scss_lint.rb, line 10 def self.non_namespaced_name 'scss_lint' end
Public Instance Methods
reload()
click to toggle source
# File lib/guard/scss_lint.rb, line 30 def reload end
run_all()
click to toggle source
# File lib/guard/scss_lint.rb, line 33 def run_all Guard::Compat::UI.info 'Running ScssLint for all .scss files' pattern = File.join '**', '*.scss' paths = Guard::Compat.matching_files(self, Dir.glob(pattern)) run_on_changes paths end
run_on_changes(paths)
click to toggle source
# File lib/guard/scss_lint.rb, line 40 def run_on_changes(paths) paths = paths.reject { |p| @config.excluded_file?(p) }.map { |path| { path: path } } if paths.empty? Guard::Compat::UI.info 'Guard has not detected any valid changes. Skipping run' return end if paths.size == 1 && paths[0][:path] == scss_config_file Guard::Compat::UI.info 'Detected a change to the scss config file only. Running Guard on all scss files' run_all return end Guard::Compat::UI.info "Running ScssLint on #{paths.reject { |p| p == scss_config_file }.uniq}" run paths.reject { |p| p[:path] == scss_config_file }.uniq end
start()
click to toggle source
# File lib/guard/scss_lint.rb, line 25 def start Guard::Compat::UI.info "Guard::ScssLint (SCSSLint version #{SCSSLint::VERSION}) is running" run_all if @options[:all_on_start] end
Private Instance Methods
lint_message(lint)
click to toggle source
# File lib/guard/scss_lint.rb, line 88 def lint_message(lint) [ Rainbow(lint.filename).color(:cyan), ':', Rainbow(lint.location.line.to_s).color(:magenta), ':', Rainbow(lint.location.column.to_s).color(:blue), ' ', lint_severity_abbrevation(lint), ' ', Rainbow(lint.linter.name).color(:green), Rainbow(':').color(:green), ' ', lint.description ].join end
lint_severity_abbrevation(lint)
click to toggle source
# File lib/guard/scss_lint.rb, line 105 def lint_severity_abbrevation(lint) color = lint.severity == :error ? :red : :yellow Rainbow(['[', lint.severity.to_s[0].upcase, ']'].join).color(color) end
load_config()
click to toggle source
# File lib/guard/scss_lint.rb, line 64 def load_config config_file = scss_config_file @config = if File.exist?(config_file) SCSSLint::Config.load config_file else SCSSLint::Config.default end end
run(paths = [])
click to toggle source
# File lib/guard/scss_lint.rb, line 73 def run(paths = []) load_config @scss_lint_runner = SCSSLint::Runner.new @config @scss_lint_runner.run paths @scss_lint_runner.lints.each do |lint| Guard::Compat::UI.send lint.severity, lint_message(lint) end lints = @scss_lint_runner.lints.count Guard::Compat::UI.info "Guard::ScssLint inspected #{paths.size} files, found #{lints} errors." Guard::Compat::UI.notify("#{lints} errors found", title: 'Guard ScssLint issues found') if lints > 0 end
scss_config_file()
click to toggle source
# File lib/guard/scss_lint.rb, line 60 def scss_config_file @options[:config] || '.scss-lint.yml' end