Sha256: 05ec2051c8dd5895553776163ca943ed826fe0e0a633589a4af074a348e796d6

Contents?: true

Size: 1.61 KB

Versions: 5

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

module PlatformosCheck
  # Recommends using {% liquid ... %} if 5 or more consecutive {% ... %} are found.
  class TranslationKeyExists < LiquidCheck
    severity :error
    categories :translation, :liquid
    doc docs_url(__FILE__)

    def on_variable(node)
      return unless node.value.name.is_a?(String)
      return unless node.filters.size == 1

      translation_filter = node.filters.detect { |f| TranslationFile::TRANSLATION_FILTERS.include?(f[0]) }
      return unless translation_filter
      return unless translation_filter

      filter_attributes = translation_filter[2] || {}

      return unless filter_attributes['default'].nil?
      return if !filter_attributes['scope'].nil? && !filter_attributes['scope'].is_a?(String)

      lang = filter_attributes['language'].is_a?(String) ? filter_attributes['language'] : @platformos_app.default_language
      translation_components = node.value.name.split('.')

      translation_components = filter_attributes['scope'].split('.') + translation_components if filter_attributes['scope']

      return add_translation_offense(node:, lang:) if @platformos_app.translations_hash.empty?

      hash = @platformos_app.translations_hash[lang] || {}
      index = 0
      while translation_components[index]
        hash = hash[translation_components[index]]
        if hash.nil?
          add_translation_offense(node:, lang:)
          break
        end
        index += 1
      end
    end

    protected

    def add_translation_offense(node:, lang:)
      add_offense("Translation `#{lang}.#{node.value.name}` does not exists", node:)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
platformos-check-0.4.14 lib/platformos_check/checks/translation_key_exists.rb
platformos-check-0.4.13 lib/platformos_check/checks/translation_key_exists.rb
platformos-check-0.4.12 lib/platformos_check/checks/translation_key_exists.rb
platformos-check-0.4.11 lib/platformos_check/checks/translation_key_exists.rb
platformos-check-0.4.10 lib/platformos_check/checks/translation_key_exists.rb