Sha256: 3dc9dce4450380294f78dbf868ba13d6d9d5ac435de2612cff6801755a5a93ec

Contents?: true

Size: 1.22 KB

Versions: 15

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module IziLightup
  module InlineAsset
    class << self
      def inline_file(paths, format = nil)
        Array.wrap(paths).map do |asset_path|
          raw_source(with_ext(asset_path, format))
        end.join("\n" * 3)
      end

      def inline_js(paths = [])
        return '' if paths.blank?

        "<script type='text/javascript'>#{inline_file(paths, :js)}</script>"
      end

      def inline_css(paths = [])
        return '' if paths.blank?

        "<style type='text/css'>#{inline_file(paths, :css)}</style>"
      end

      private

      def with_ext(path, format = nil)
        return path if format.nil?

        ext = File.extname(path)
        return path if ext.present?

        "#{path}.#{format}"
      end

      def raw_source(asset_path)
        return find_sources_fallback(asset_path) if old_manifest?

        manifest.find_sources(asset_path).first&.html_safe
      end

      def old_manifest?
        !manifest.respond_to?(:find_sources)
      end

      def manifest
        @manifest ||= Rails.application.assets_manifest
      end

      def find_sources_fallback(asset_path)
        Rails.application.assets.find_asset(asset_path)&.source&.html_safe
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
izi_lightup-1.0.17 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.16 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.15 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.14 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.13 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.12 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.11 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.10 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.9 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.8 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.7 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.6 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.5 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.4 lib/izi_lightup/inline_asset.rb
izi_lightup-1.0.3 lib/izi_lightup/inline_asset.rb