module Mobilify

Constants

VERSION

Public Class Methods

new(browser, opts = {}) click to toggle source

Build page object with context(s) for method replacement

Calls superclass method
# File lib/mobilify.rb, line 10
def initialize(browser, opts = {})
  super(browser, opts[:visit] || false)
  @context = set_context opts[:context]
  mobilify! if @context
end

Private Class Methods

included(klass) click to toggle source

Include page-object too

# File lib/mobilify.rb, line 31
def self.included klass
  klass.send :include, PageObject
end

Public Instance Methods

context() click to toggle source

Returns context(s) passed to page object instance construction

@return [Array]

# File lib/mobilify.rb, line 21
def context
  @context
end
Also aliased as: context?
context?()
Alias for: context

Private Instance Methods

get_contextual_match(context) click to toggle source

Find page object methods matching the given context

# File lib/mobilify.rb, line 65
def get_contextual_match context
  methods.select{ |m| m.to_s.start_with? "#{context}_" }.select{ |m| respond_to? m.to_s.gsub("#{context}_","") }
end
match_and_replace(context) click to toggle source

Method replacement

# File lib/mobilify.rb, line 56
def match_and_replace context
  get_contextual_match(context).map { |m| self.method(m) }.each do |method|
    replace! method, context
  end
end
mobilify!() click to toggle source

Iterate over contexts for method replacement

# File lib/mobilify.rb, line 46
def mobilify!
  @context.each_with_object([]) do |c, array|
    next unless array.flatten.empty?
    array << match_and_replace(c.to_s)
  end
end
replace!(method, context) click to toggle source

Redefine contextually matching method as original method

# File lib/mobilify.rb, line 72
def replace! method, context
  (class << self; self; end).class_eval{ define_method(method.name.to_s.gsub("#{context}_",""), method) }
end
set_context(config) click to toggle source

Format given context(s) to Mobilify's liking

# File lib/mobilify.rb, line 38
def set_context config
  return nil if config.nil?
  config.kind_of?(Array) ? config.flatten.map(&:to_sym) : [config].map(&:to_sym)
end