235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
|
# File 'lib/scrapes/rule_parser.rb', line 235
def process(node, context)
context.instance_variable_set '@hpricot', node
return true if @limit == 0
result = @selector.call(node)
result = [result] unless result.respond_to? :each
current = context.instance_variable_set "@#@name", []
result.compact.each do |node|
value = case @extractor
when UnboundMethod then @extractor.bind(context).call(node)
when Extractor then @extractor.(node)
when Proc, Method then @extractor.call(node)
when Class then @extractor.parse(node)
end
next unless value
current << value
break if current.size == @limit
end
context.instance_variable_set "@#@name", current[0] if @limit == 1
true
end
|