Class: Crawlr::Callbacks
- Inherits:
-
Object
- Object
- Crawlr::Callbacks
- Defined in:
- lib/crawlr/callbacks.rb
Overview
Manages callback registration and execution for document scraping operations.
The Callbacks class provides a centralized way to register and manage callbacks that process specific nodes in HTML or XML documents using CSS or XPath selectors.
Constant Summary collapse
- ALLOWED_FORMATS =
Supported document formats for scraping
%i[html xml].freeze
- ALLOWED_SELECTOR_TYPES =
Supported selector types for element selection
%i[css xpath].freeze
Instance Method Summary collapse
-
#all ⇒ Array<Hash>
Returns a copy of all registered callbacks.
-
#clear ⇒ Array
Clears all registered callbacks.
-
#initialize ⇒ Callbacks
constructor
Initializes a new Callbacks instance.
-
#register(format, selector_type, selector, &block) {|node, ctx| ... } ⇒ void
Registers a new callback for processing matching nodes.
-
#stats ⇒ Hash<Symbol, Integer>
Returns basic statistics about registered callbacks.
Constructor Details
#initialize ⇒ Callbacks
Initializes a new Callbacks instance
35 36 37 |
# File 'lib/crawlr/callbacks.rb', line 35 def initialize @callbacks = [] end |
Instance Method Details
#all ⇒ Array<Hash>
Returns a copy of all registered callbacks
45 46 47 |
# File 'lib/crawlr/callbacks.rb', line 45 def all @callbacks.dup end |
#clear ⇒ Array
Clears all registered callbacks
95 96 97 |
# File 'lib/crawlr/callbacks.rb', line 95 def clear @callbacks.clear end |
#register(format, selector_type, selector, &block) {|node, ctx| ... } ⇒ void
This method returns an undefined value.
Registers a new callback for processing matching nodes
69 70 71 72 73 74 75 76 77 |
# File 'lib/crawlr/callbacks.rb', line 69 def register(format, selector_type, selector, &block) validate_registration(format, selector_type) @callbacks << { format: format, selector_type: selector_type, selector: selector, block: ->(node, ctx) { block.call(node, ctx) } } end |
#stats ⇒ Hash<Symbol, Integer>
Returns basic statistics about registered callbacks
85 86 87 |
# File 'lib/crawlr/callbacks.rb', line 85 def stats { callbacks_count: @callbacks.size } end |