Sha256: 3d16b70eeff521af6e98e09283e02bdd7e4dd4ec7fdcf5a60f78c55fc41109d2

Contents?: true

Size: 1.06 KB

Versions: 28

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

class Grover
  #
  # Helper module for preparing HTML for conversion
  #
  # Sourced from the PDFKit project
  # @see https://github.com/pdfkit/pdfkit
  #
  module HTMLPreprocessor
    # Change relative paths to absolute, and relative protocols to absolute protocols
    def self.process(html, root_url, protocol)
      html = translate_relative_paths(html, root_url) if root_url
      html = translate_relative_protocols(html, protocol) if protocol
      html
    end

    def self.translate_relative_paths(html, root_url)
      # Try out this regexp using rubular http://rubular.com/r/hiAxBNX7KE
      html.gsub(%r{(href|src)=(['"])/([^/"']([^"']*|[^"']*))?['"]}, "\\1=\\2#{root_url}\\3\\2")
    end
    private_class_method :translate_relative_paths

    def self.translate_relative_protocols(body, protocol)
      # Try out this regexp using rubular http://rubular.com/r/0Ohk0wFYxV
      body.gsub(%r{(href|src)=(['"])//([^"']*|[^"']*)['"]}, "\\1=\\2#{protocol}://\\3\\2")
    end
    private_class_method :translate_relative_protocols
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
grover-1.2.1 lib/grover/html_preprocessor.rb
grover-1.2.0 lib/grover/html_preprocessor.rb
grover-1.1.11 lib/grover/html_preprocessor.rb
grover-1.1.10 lib/grover/html_preprocessor.rb
grover-1.1.9 lib/grover/html_preprocessor.rb
grover-1.1.8 lib/grover/html_preprocessor.rb
grover-1.1.7 lib/grover/html_preprocessor.rb
grover-1.1.6 lib/grover/html_preprocessor.rb
grover-1.1.5 lib/grover/html_preprocessor.rb
grover-1.1.4 lib/grover/html_preprocessor.rb
grover-1.1.3 lib/grover/html_preprocessor.rb
grover-1.1.2 lib/grover/html_preprocessor.rb
grover-1.1.1 lib/grover/html_preprocessor.rb
grover-1.1.0 lib/grover/html_preprocessor.rb
grover-1.0.6 lib/grover/html_preprocessor.rb
grover-1.0.5 lib/grover/html_preprocessor.rb
grover-1.0.4 lib/grover/html_preprocessor.rb
grover-1.0.3 lib/grover/html_preprocessor.rb
grover-1.0.2 lib/grover/html_preprocessor.rb
grover-1.0.1 lib/grover/html_preprocessor.rb