Sha256: 61d83a1a5b864bc414f791530033ba6a3221ef1093956697c9af2521d06d01db
Contents?: true
Size: 1 KB
Versions: 4
Compression:
Stored size: 1 KB
Contents
# frozen_string_literal: true require 'active_support' require 'active_support/core_ext/object' module Juknife module Scraping module DSL # A DSL node in the tree that scrapes elements. class Items include DSL attr_reader :name, :selector, :type def initialize(name, selector, type = :string, *args, &block) @name = name @selector = selector @type = type @args = args return unless block instance_eval(&block) end 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 end end end end
Version data entries
4 entries across 4 versions & 1 rubygems