Sha256: 358651b381396999ed8e1c68c4cdb10e1fbbc68b54547c1a59264a5d4d315b13

Contents?: true

Size: 970 Bytes

Versions: 4

Compression:

Stored size: 970 Bytes

Contents

# frozen_string_literal: true

module RailsDevtools
  class AssetConfig
    def self.find
      providers = AssetProvider.new.list
      new(providers)
    end

    def initialize(providers)
      @providers = providers
    end

    def paths
      @paths ||= @providers.flat_map(&:paths)
    end

    def helper_snippet
      if vite_rails?
        "vite_image_tag"
      else
        "image_tag"
      end
    end

    def implicit_path
      if vite_rails?
        ""
      else
        "images/"
      end
    end

    def vite_rails?
      @providers.any? { |p| p.provider == :vite_rails }
    end
  end

  class AssetProvider
    PROVIDERS = [
      AssetProviders::SprocketConfig,
      AssetProviders::ViteRailsConfig,
      AssetProviders::JsbundlingRailsConfig,
      AssetProviders::ShakapackerConfig,
      AssetProviders::PropshaftConfig
    ].freeze

    def list
      @list ||= PROVIDERS.select { |config| config.new.used? }.map(&:new)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_devtools-0.1.3 lib/rails_devtools/asset_config.rb
rails_devtools-0.1.2 lib/rails_devtools/asset_config.rb
rails_devtools-0.1.1 lib/rails_devtools/asset_config.rb
rails_devtools-0.1.0 lib/rails_devtools/asset_config.rb