Class: Grover

Inherits:
Object show all
Defined in:
lib/grover.rb,
lib/grover/utils.rb,
lib/grover/errors.rb,
lib/grover/version.rb,
lib/grover/processor.rb,
lib/grover/middleware.rb,
lib/grover/configuration.rb,
lib/grover/options_fixer.rb,
lib/grover/options_builder.rb,
lib/grover/html_preprocessor.rb

Overview

Grover interface for converting HTML to PDF

Defined Under Namespace

Modules: HTMLPreprocessor, JavaScript Classes: Configuration, Middleware, OptionsBuilder, OptionsFixer, Processor, Utils

Constant Summary collapse

DEFAULT_HEADER_TEMPLATE =
"<div class='date text left'></div><div class='title text center'></div>"
<<~HTML
  <div class='url text left grow'></div>
  <div class='text right'><span class='pageNumber'></span>/<span class='totalPages'></span></div>
HTML
Error =

Error classes for calling out to Puppeteer NodeJS library

Heavily based on the Schmooze library github.com/Shopify/schmooze

Class.new(StandardError)
DependencyError =
Class.new(Error)
UnsafeConfigurationError =
Class.new(Error)
VERSION =
'1.2.0'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(uri, **options) ⇒ Grover

Returns a new instance of Grover.

Parameters:



36
37
38
39
40
41
42
# File 'lib/grover.rb', line 36

def initialize(uri, **options)
  @uri = uri.to_s
  @options = OptionsBuilder.new(options, @uri)
  @root_path = @options.delete 'root_path'
  @front_cover_path = @options.delete 'front_cover_path'
  @back_cover_path = @options.delete 'back_cover_path'
end

Instance Attribute Details

#back_cover_pathObject (readonly)

Returns the value of attribute back_cover_path.



28
29
30
# File 'lib/grover.rb', line 28

def back_cover_path
  @back_cover_path
end

#front_cover_pathObject (readonly)

Returns the value of attribute front_cover_path.



28
29
30
# File 'lib/grover.rb', line 28

def front_cover_path
  @front_cover_path
end

Class Method Details

.configurationObject

Configuration for the conversion



129
130
131
# File 'lib/grover.rb', line 129

def self.configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



133
134
135
# File 'lib/grover.rb', line 133

def self.configure
  yield(configuration)
end

Instance Method Details

#inspectObject

Instance inspection



117
118
119
120
121
122
123
124
# File 'lib/grover.rb', line 117

def inspect
  format(
    '#<%<class_name>s:0x%<object_id>p @uri="%<uri>s">',
    class_name: self.class.name,
    object_id: object_id,
    uri: @uri
  )
end

#screenshot(path: nil, format: nil) ⇒ String

Request URI with provided options and create screenshot

Parameters:

  • path (String) (defaults to: nil)

    Optional path to write the screenshot to

  • format (String) (defaults to: nil)

    Optional format of the screenshot

Returns:

  • (String)

    The resulting image data



70
71
72
73
74
# File 'lib/grover.rb', line 70

def screenshot(path: nil, format: nil)
  options = normalized_options(path: path)
  options['type'] = format if %w[png jpeg].include? format
  processor.convert :screenshot, @uri, options
end

#show_back_cover?Boolean

Returns whether a back cover (request) path has been specified in the options

Returns:

  • (Boolean)

    Back cover path is configured



110
111
112
# File 'lib/grover.rb', line 110

def show_back_cover?
  back_cover_path.is_a?(::String) && back_cover_path.start_with?('/')
end

#show_front_cover?Boolean

Returns whether a front cover (request) path has been specified in the options

Returns:

  • (Boolean)

    Front cover path is configured



101
102
103
# File 'lib/grover.rb', line 101

def show_front_cover?
  front_cover_path.is_a?(::String) && front_cover_path.start_with?('/')
end

#to_htmlString

Request URI with provided options and render HTML

Returns:

  • (String)

    The resulting HTML string



59
60
61
# File 'lib/grover.rb', line 59

def to_html
  processor.convert :content, @uri, normalized_options(path: nil)
end

#to_jpeg(path = nil) ⇒ String

Request URI with provided options and create JPEG

Parameters:

  • path (String) (defaults to: nil)

    Optional path to write the screenshot to

Returns:

  • (String)

    The resulting JPEG data



92
93
94
# File 'lib/grover.rb', line 92

def to_jpeg(path = nil)
  screenshot path: path, format: 'jpeg'
end

#to_pdf(path = nil) ⇒ String

Request URI with provided options and create PDF

Parameters:

  • path (String) (defaults to: nil)

    Optional path to write the PDF to

Returns:

  • (String)

    The resulting PDF data



50
51
52
# File 'lib/grover.rb', line 50

def to_pdf(path = nil)
  processor.convert :pdf, @uri, normalized_options(path: path)
end

#to_png(path = nil) ⇒ String

Request URI with provided options and create PNG

Parameters:

  • path (String) (defaults to: nil)

    Optional path to write the screenshot to

Returns:

  • (String)

    The resulting PNG data



82
83
84
# File 'lib/grover.rb', line 82

def to_png(path = nil)
  screenshot path: path, format: 'png'
end