class Juknife::Scraping::DSL::Items

A DSL node in the tree that scrapes elements.

Attributes

name[R]
selector[R]
type[R]

Public Class Methods

new(name, selector, type = :string, *args, &block) click to toggle source
# File lib/juknife/scraping/dsl/items.rb, line 15
def initialize(name, selector, type = :string, *args, &block)
  @name = name
  @selector = selector
  @type = type
  @args = args

  return unless block
  instance_eval(&block)
end

Public Instance Methods

visit(context) click to toggle source
# File lib/juknife/scraping/dsl/items.rb, line 25
def visit(context) # rubocop:disable Metrics/AbcSize
  result = []

  context.find_all(selector).each do |ele_chlid|
    child_context = Context.new(ele_chlid, {})

    children.each do |child|
      child.visit(child_context)
    end

    result << child_context.result
  end

  context.result[name] =
    result.reject { |hash| hash.values.compact.all?(&:empty?) }
end