diff options
author | Stan Hu <stanhu@gmail.com> | 2019-05-21 19:49:14 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-05-21 19:49:14 -0700 |
commit | 27381e22a92453b23f1ed75406970b37d926f1ec (patch) | |
tree | bdb46c358c8028493f3e69d8adb2cdaaf2f766fe /lib | |
parent | 0ded86570c10d24ad4fff7e4fcd4b562bcd397fd (diff) | |
download | gitlab-ce-27381e22a92453b23f1ed75406970b37d926f1ec.tar.gz |
Move files from lib/haml_lint to haml_lintsh-fix-linter-registry-haml
Files in lib will be eager loaded and hence will require haml_lint to be
loaded. Since this is only a development dependency, we can't assume
this gem will be available in production, so it should never be loaded
in production.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/haml_lint/inline_javascript.rb | 25 | ||||
-rw-r--r-- | lib/haml_lint/linter/no_plain_nodes.rb | 84 | ||||
-rw-r--r-- | lib/tasks/haml-lint.rake | 2 |
3 files changed, 1 insertions, 110 deletions
diff --git a/lib/haml_lint/inline_javascript.rb b/lib/haml_lint/inline_javascript.rb deleted file mode 100644 index da6af92e82b..00000000000 --- a/lib/haml_lint/inline_javascript.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -unless Rails.env.production? - require_dependency 'haml_lint/haml_visitor' - require_dependency 'haml_lint/linter' - require_dependency 'haml_lint/linter_registry' - - module HamlLint - class Linter::InlineJavaScript < Linter - include ::HamlLint::LinterRegistry - - def visit_filter(node) - return unless node.filter_type == 'javascript' - - record_lint(node, 'Inline JavaScript is discouraged (https://docs.gitlab.com/ee/development/gotchas.html#do-not-use-inline-javascript-in-views)') - end - - def visit_tag(node) - return unless node.tag_name == 'script' - - record_lint(node, 'Inline JavaScript is discouraged (https://docs.gitlab.com/ee/development/gotchas.html#do-not-use-inline-javascript-in-views)') - end - end - end -end diff --git a/lib/haml_lint/linter/no_plain_nodes.rb b/lib/haml_lint/linter/no_plain_nodes.rb deleted file mode 100644 index c39f61fa80d..00000000000 --- a/lib/haml_lint/linter/no_plain_nodes.rb +++ /dev/null @@ -1,84 +0,0 @@ -# frozen_string_literal: true - -require 'active_support/core_ext/array/grouping' - -module HamlLint - class Linter - class NoPlainNodes < Linter - include ::HamlLint::LinterRegistry - - def visit_tag(node) - if inline_plain_node?(node) - check_inline(node) - elsif !node.script.empty? - check_script(node) - else - check(node) - end - end - - private - - def check(node) - text_in_node(node).each { |string| record(node, string) } - end - - def check_inline(node) - text = inline_text(node) - record(node, text) unless text.empty? - end - - def check_script(node) - text = inline_text(node) - record(node, text) unless text.start_with?('=') || text.empty? - end - - # Build an array of all strings in child text nodes. - # non text nodes are nil, where we'll split the sentences. - def text_in_node(node) - texts = node.children.map do |child| - child.text.strip if text_node?(child) - end - - texts.split(nil).map { |sentence| sentence.join(' ') unless sentence.empty? }.compact - end - - # Removes a node's attributes and tag from the source code, - # returning the inline text of a node. - def inline_text(node) - text = node.source_code.gsub("%#{node.tag_name}", '') - - attributes = node.attributes_source.map(&:last) - attributes.each { |attribute| text = text.gsub(attribute, '') } - - text.strip - end - - def record(node, string) - record_lint(node, message(string)) - end - - def message(string) - "`#{string}` is a plain node. Please use an i18n method like `#{fixed(string)}`" - end - - def fixed(string) - "= _('#{string}')" - end - - def inline_plain_node?(node) - node.children.empty? && node.script.empty? - end - - def plain_node?(node) - node.is_a?(::HamlLint::Tree::PlainNode) - end - - def text_node?(node) - return false unless plain_node?(node) - - !node.text.empty? - end - end - end -end diff --git a/lib/tasks/haml-lint.rake b/lib/tasks/haml-lint.rake index 786efd14b1a..305e15d69d5 100644 --- a/lib/tasks/haml-lint.rake +++ b/lib/tasks/haml-lint.rake @@ -1,6 +1,6 @@ unless Rails.env.production? require 'haml_lint/rake_task' - require 'haml_lint/inline_javascript' + require Rails.root.join('haml_lint/inline_javascript') # Workaround for warnings from parser/current # Keep it even if it no longer emits any warnings, |