Method: Insite::ComponentCollection#initialize

Defined in:
lib/insite/component/component_collection.rb

#initialize(query_scope, *args) ⇒ ComponentCollection

Returns a new instance of ComponentCollection.



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/insite/component/component_collection.rb', line 45

def initialize(query_scope, *args)
  @site     = query_scope.class.ancestors.include?(Insite) ? query_scope : query_scope.site
  @browser  = @site.browser
  @collection_member_type = self.class.instance_variable_get(:@collection_member_type)
  @selector = @collection_member_type.selector

  if args[0].is_a?(Insite::Element) || args[0].is_a?(Watir::Element)
    @dom_type = nil
    @args     = nil
    @target   = args[0].target
  elsif  args[0].is_a?(Insite::ElementCollection) || args[0].is_a?(Watir::ElementCollection)
    @dom_type = nil
    @args     = nil
    @target   = args[0]
  else

    @args     = parse_args(args)
    @selector = @args

    @non_relative = @args.delete(:non_relative) || false
    if @non_relative
      @query_scope = query_scope.site
    else
      query_scope.respond_to?(:target) ? obj = query_scope : obj = query_scope.site
      @query_scope = obj
    end

    if watir_class = Insite::CLASS_MAP.key(self.class)
      @target = watir_class.new(@query_scope.target, @args)
    else
      @target = Watir::HTMLElementCollection.new(@query_scope.target, @args)
    end
  end
end