Sha256: 7449ddf268fb602a039c3b9118369302cc110575157e828d3220f7f64b351095

Contents?: true

Size: 780 Bytes

Versions: 4

Compression:

Stored size: 780 Bytes

Contents

require 'uri'

class PDFKit
  class Source
    SOURCE_FROM_STDIN = '-'

    def initialize(url_file_or_html)
      @source = url_file_or_html
    end

    def url?
      @is_url ||= @source.is_a?(String) && @source.match(/\Ahttp/)
    end

    def file?
      @is_file ||= @source.kind_of?(File)
    end

    def html?
      @is_html ||= !(url? || file?)
    end

    def to_input_for_command
      if file?
        @source.path
      elsif url?
        %{"#{shell_safe_url}"}
      else
        SOURCE_FROM_STDIN
      end
    end

    def to_s
      file? ? @source.path : @source
    end

    private

    def shell_safe_url
      url_needs_escaping? ? URI::escape(@source) : @source
    end

    def url_needs_escaping?
      URI::decode(@source) == @source
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
pdfkit-0.8.4.1 lib/pdfkit/source.rb
pdfkit-0.8.4 lib/pdfkit/source.rb
pdfkit-0.8.3 lib/pdfkit/source.rb
pdfkit-0.8.2 lib/pdfkit/source.rb