class ERBLint::Linters::ErbSafety
Detect unsafe ruby interpolations into javascript.
Public Class Methods
new(file_loader, config)
click to toggle source
Calls superclass method
ERBLint::Linter::new
# File lib/erb_lint/linters/erb_safety.rb, line 18 def initialize(file_loader, config) super @config_filename = @config.better_html_config end
Public Instance Methods
run(processed_source)
click to toggle source
# File lib/erb_lint/linters/erb_safety.rb, line 23 def run(processed_source) testers_for(processed_source.parser).each do |tester| tester.validate tester.errors.each do |error| add_offense( error.location, error.message ) end end end
Private Instance Methods
better_html_config()
click to toggle source
# File lib/erb_lint/linters/erb_safety.rb, line 52 def better_html_config @better_html_config ||= begin config_hash = if @config_filename.nil? {} else @file_loader.yaml(@config_filename).symbolize_keys end BetterHtml::Config.new(**config_hash) end end
tester_classes()
click to toggle source
# File lib/erb_lint/linters/erb_safety.rb, line 37 def tester_classes [ BetterHtml::TestHelper::SafeErb::NoStatements, BetterHtml::TestHelper::SafeErb::AllowedScriptType, BetterHtml::TestHelper::SafeErb::TagInterpolation, BetterHtml::TestHelper::SafeErb::ScriptInterpolation, ] end
testers_for(parser)
click to toggle source
# File lib/erb_lint/linters/erb_safety.rb, line 46 def testers_for(parser) tester_classes.map do |tester_klass| tester_klass.new(parser, config: better_html_config) end end