Sha256: 6777328c88f77993261ce13ab0515c9aca96b65ac08d7503b784ec8241be99a7
Contents?: true
Size: 1.23 KB
Versions: 2
Compression:
Stored size: 1.23 KB
Contents
# frozen_string_literal: true require_relative "base_linter" require_relative "autocorrectable" require_relative "argument_mappers/flash" module ERBLint module Linters # Counts the number of times a HTML flash is used instead of the component. class FlashMigrationCounter < BaseLinter include Autocorrectable TAGS = %w[div].freeze CLASSES = %w[flash].freeze MESSAGE = "We are migrating flashes to use [Yattho::Beta::Flash](https://yattho.com/view-components/components/beta/flash), please try to use that instead of raw HTML." ARGUMENT_MAPPER = ArgumentMappers::Flash COMPONENT = "Yattho::Beta::Flash" def map_arguments(tag, tag_tree) # We can only autocorrect elements with simple text as content. return nil if tag_tree[:children].size != 1 # Hash children indicates that there are tags in the content. return nil if tag_tree[:children].first.is_a?(Hash) content = tag_tree[:children].first # Don't accept content with ERB blocks return nil if content.type != :text || content.children&.any? { |n| n.try(:type) == :erb } ARGUMENT_MAPPER.new(tag).to_s rescue ArgumentMappers::ConversionError nil end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
yattho_view_components-0.1.1 | lib/yattho/view_components/linters/flash_migration_counter.rb |
yattho_view_components-0.0.1 | lib/yattho/view_components/linters/flash_migration_counter.rb |