Sha256: e4a297148502576e9e1094f036c5c517da90e81d20e6bae31713f9a018465342

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

# A mixin for tags that returns the file as their content.
module ComfortableMexicanSofa::Content::Tag::Mixins
  module FileContent

    # @param [ActiveStorage::Blob] file
    # @param ["link", "image", "url"] as
    # @param [{String => String}] variant_attrs ImageMagick variant attributes
    # @param [String] label alt text for `as: "image"`, link text for `as: "link"`
    # @return [String]
    def content(file: self.file, as: self.as, variant_attrs: self.variant_attrs, label: self.label)
      return "" unless file

      if variant_attrs.present? && attachment.image?
        file = file.variant(combine_options: variant_attrs)
      end

      url = rails_blob_path(file)

      case as
      when "link"
        "<a href='#{url}' target='_blank'>#{label}</a>"
      when "image"
        "<img src='#{url}' alt='#{label}'/>"
      else
        url
      end
    end

    # @param [ActiveStorage::Blob]
    # @return [String]
    def rails_blob_path(blob)
      Rails.application.routes.url_helpers.rails_blob_path(blob, only_path: true)
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
comfortable_mexican_sofa-2.0.17 lib/comfortable_mexican_sofa/content/tags/mixins/file_content.rb
comfortable_mexican_sofa-2.0.16 lib/comfortable_mexican_sofa/content/tags/mixins/file_content.rb
comfortable_mexican_sofa-2.0.15 lib/comfortable_mexican_sofa/content/tags/mixins/file_content.rb
comfortable_mexican_sofa-2.0.14 lib/comfortable_mexican_sofa/content/tags/mixins/file_content.rb