Sha256: 8ff32424cfc5fb26d6d8ae1dd0e4168bcc25fc29e546b51d269f531e5b638b3c

Contents?: true

Size: 1015 Bytes

Versions: 5

Compression:

Stored size: 1015 Bytes

Contents

module Locomotive
  module Liquid

    class AssetHost

      IsHTTP = /^https?\/\//o

      attr_reader :request, :site, :host

      def initialize(request, site, host)
        @request, @site = request, site

        @host = build_host(host, request, site)
      end

      def compute(source, timestamp = nil)
        return source if source.nil?

        return add_timestamp_suffix(source, timestamp) if source =~ IsHTTP

        url = self.host ? URI.join(host, source).to_s : source

        add_timestamp_suffix(url, timestamp)
      end

      private

      def build_host(host, request, site)
        if host
          if host.respond_to?(:call)
            host.call(request, site)
          else
            host
          end
        else
          nil
        end
      end

      def add_timestamp_suffix(source, timestamp)
        if timestamp.nil? || timestamp == 0 || source.include?('?')
          source
        else
          "#{source}?#{timestamp}"
        end
      end

    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
locomotive_cms-2.5.7 lib/locomotive/liquid/asset_host.rb
locomotive_cms-2.5.6 lib/locomotive/liquid/asset_host.rb
locomotive_cms-2.5.6.rc2 lib/locomotive/liquid/asset_host.rb
locomotive_cms-2.5.6.rc1 lib/locomotive/liquid/asset_host.rb
locomotive_cms-2.5.5 lib/locomotive/liquid/asset_host.rb