diff --git a/.haml-lint.yml b/.haml-lint.yml index e3d566f90..e2df38d1f 100644 --- a/.haml-lint.yml +++ b/.haml-lint.yml @@ -1,4 +1,10 @@ +require: + - './lib/linters/application_name_linter.rb' + linters: + ApplicationNameLinter: + enabled: true + AlignmentTabs: enabled: true diff --git a/lib/linters/application_name_linter.rb b/lib/linters/application_name_linter.rb new file mode 100644 index 000000000..a8a8b9605 --- /dev/null +++ b/lib/linters/application_name_linter.rb @@ -0,0 +1,46 @@ +module HamlLint + class Linter::ApplicationNameLinter < Linter + include LinterRegistry + + FORBIDDEN = 'demarches-simplifiees.fr' + REPLACEMENT = "APPLICATION_NAME" + MSG = 'Hardcoding %s is forbidden, use %s instead' + + def visit_tag(node) + check(node) + end + + def visit_script(node) + check(node) + end + + def visit_silent_script(node) + check(node) + end + + def visit_plain(node) + check(node) + end + + def visit_comment(node) + check(node) + end + + def visit_haml_comment(node) + check(node) + end + + def check(node) + line = line_text_for_node(node) + if line.downcase.include?(FORBIDDEN) + record_lint(node, format(MSG, FORBIDDEN, REPLACEMENT)) + end + end + + private + + def line_text_for_node(node) + document.source_lines[node.line - 1] + end + end +end