module SpiderCore::FieldDSL
Public Instance Methods
field(display, pattern, opts = {}, &block)
click to toggle source
Get a field on current page.
@param display [String] display name
# File lib/spider_core/field_dsl.rb, line 7 def field(display, pattern, opts = {}, &block) actions << lambda { action_for(:field, {display: display, pattern: pattern}, opts, &block) } end
fields(display, pattern, opts = {}, &block)
click to toggle source
# File lib/spider_core/field_dsl.rb, line 13 def fields(display, pattern, opts = {}, &block) actions << lambda { action_for(:fields, {display: display, pattern: pattern}, opts, &block) } end
foreach(pattern, opts = {}) { |element| ... }
click to toggle source
# File lib/spider_core/field_dsl.rb, line 19 def foreach(pattern, opts = {}, &block) return unless block_given? actions << lambda { scan_all(pattern, opts).each do |element| yield(element) end } end
Protected Instance Methods
action_for(action, action_opts = {}, opts = {}, &block)
click to toggle source
# File lib/spider_core/field_dsl.rb, line 31 def action_for(action, action_opts = {}, opts = {}, &block) begin logger.info "Start to get `#{action_opts[:pattern]}` displayed `#{action_opts[:display]}`." elements = case action when :field scan_first action_opts[:pattern] when :fields scan_all action_opts[:pattern], opts else raise 'Unknow action.' end put( action_opts[:display].to_s, handle_elements(elements, &block) ) rescue Exception => err logger.fatal("Caught exception when get `#{action_opts[:pattern]}`.") logger.fatal(err) end end