Class: PageObjectify::Generator

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/page-objectify/generator.rb

Instance Method Summary collapse

Methods included from Logging

#logger

Constructor Details

#initialize(**config) ⇒ Generator

Returns a new instance of Generator.



11
12
13
# File 'lib/page-objectify/generator.rb', line 11

def initialize(**config)
  @config = Config.new(generator_class: self.class.to_s, **config)
end

Instance Method Details

#generate!Object

Calls #visit, generates a page class for the current page, then calls #teardown Raises a NotImplementedError if #visit is not implemented Raises a RuntimeError if @browser is not a Watir::Browser object

Raises:

  • (NotImplementedError)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/page-objectify/generator.rb', line 18

def generate!
  raise NotImplementedError, "The #visit method does not exist! Please implement it!" unless respond_to?(:visit)
  visit
  execute_runtime_checks

  logger.info "About to parse HTML! Current URL: #{@browser.url}"

  doc = Nokogiri::HTML(@browser.html)
  @code = DOMToRuby.new(DOM.new(doc), @config).unparse

  logger.debug "** BEGIN GENERATED CODE **"
  @code.each_line { |line| logger.debug line.chomp }
  logger.debug "** END GENERATED CODE **"

  File.open(@config.file, 'w') { |file| file.write(@code) }

  teardown
end

#teardownObject



37
38
39
# File 'lib/page-objectify/generator.rb', line 37

def teardown
  @browser.quit
end