# File lib/scraper/base.rb, line 175
175:       def selector(symbol, *selector, &block)
176:         raise ArgumentError, "Missing selector: the first argument tells us what to select" if selector.empty?
177:         if selector[0].is_a?(String)
178:           selector = HTML::Selector.new(*selector)
179:         else
180:           raise ArgumentError, "Selector must respond to select() method" unless selector.respond_to?(:select)
181:           selector = selector[0]
182:         end
183:         if block
184:           define_method symbol do |element|
185:             selected = selector.select(element)
186:             return block.call(selected) unless selected.empty?
187:           end
188:           define_method "first_#{symbol}" do |element|
189:             selected = selector.select_first(element)
190:             return block.call([selected]) if selected
191:           end
192:         else
193:           define_method symbol do |element|
194:             return selector.select(element)
195:           end
196:           define_method "first_#{symbol}" do |element|
197:             return selector.select_first(element)
198:           end
199:         end
200:       end