Module: Watirsome::Initializers

Defined in:
lib/watirsome/initializers.rb

Instance Method Summary collapse

Instance Method Details

#initialize(browser) ⇒ Object

Initializes page class. Allows to define “#initialize_page” which will be called as page constructor. After page is initialized, iterates through region and initialize each of them.



9
10
11
12
13
# File 'lib/watirsome/initializers.rb', line 9

def initialize(browser)
  @browser = browser
  initialize_page if respond_to?(:initialize_page)
  initialize_regions
end

#initialize_regionsObject

Iterates through definitions of “#initialize_region”, thus implementing polymorphic Ruby modules (i.e. page regions).

Only works with modules matching “Watirsome.region_matcher” regexp.

See Also:

  • Watirsome.region_matcher


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/watirsome/initializers.rb', line 22

def initialize_regions
  # regions cacher
  @initialized_regions ||= []
  # get included and extended modules
  modules = self.class.included_modules + (class << self; self end).included_modules
  modules.uniq!
  # initialize each module
  modules.each do |m|
    # check that constructor is defined and we haven't called it before
    if !@initialized_regions.include?(m) && m.instance_methods.include?(:initialize_region)
      m.instance_method(:initialize_region).bind(self).call
      # cache region
      @initialized_regions << m
    end
  end
end