Class: Grover

Inherits:
Object show all
Defined in:
lib/grover.rb,
lib/grover/utils.rb,
lib/grover/version.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 Classes: Configuration, Middleware, OptionsBuilder, OptionsFixer, 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
VERSION =
'0.11.3'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url, options = {}) ⇒ Grover

Returns a new instance of Grover.

Parameters:



153
154
155
156
157
158
159
# File 'lib/grover.rb', line 153

def initialize(url, options = {})
  @url = url
  @options = OptionsBuilder.new(options, url)
  @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.



146
147
148
# File 'lib/grover.rb', line 146

def back_cover_path
  @back_cover_path
end

#front_cover_pathObject (readonly)

Returns the value of attribute front_cover_path.



146
147
148
# File 'lib/grover.rb', line 146

def front_cover_path
  @front_cover_path
end

Class Method Details

.configurationObject

Configuration for the conversion



243
244
245
# File 'lib/grover.rb', line 243

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

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

Yields:



247
248
249
# File 'lib/grover.rb', line 247

def self.configure
  yield(configuration)
end

Instance Method Details

#inspectObject

Instance inspection



231
232
233
234
235
236
237
238
# File 'lib/grover.rb', line 231

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

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

Request URL 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



181
182
183
184
185
186
187
188
# File 'lib/grover.rb', line 181

def screenshot(path: nil, format: nil)
  options = normalized_options(path: path)
  options['type'] = format if format.is_a? ::String
  result = processor.convert_screenshot @url, options
  return unless result

  result['data'].pack('C*')
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



224
225
226
# File 'lib/grover.rb', line 224

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



215
216
217
# File 'lib/grover.rb', line 215

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

#to_jpeg(path = nil) ⇒ String

Request URL 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



206
207
208
# File 'lib/grover.rb', line 206

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

#to_pdf(path = nil) ⇒ String

Request URL 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



167
168
169
170
171
172
# File 'lib/grover.rb', line 167

def to_pdf(path = nil)
  result = processor.convert_pdf @url, normalized_options(path: path)
  return unless result

  result['data'].pack('C*')
end

#to_png(path = nil) ⇒ String

Request URL 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



196
197
198
# File 'lib/grover.rb', line 196

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