module Whois::Record::Scanners::Scannable
The Scannable module tries to emulate a super-simple Abstract Syntax Tree structure including method for accessing ast nodes.
Usage¶ ↑
Include the Scannable module and set the `self.scanner` value.
class ParserFoo include Scannable self.scanner = ScannerFoo end
Now you can access the AST using the node
method.
node "created_on" # => "2009-12-12" node? "created_on" # => true node? "created_at" # => false
Public Class Methods
included(base)
click to toggle source
# File lib/whois/record/scanners/scannable.rb, line 43 def self.included(base) base.class_attribute :scanner end
Public Instance Methods
node(key) { |value| ... }
click to toggle source
# File lib/whois/record/scanners/scannable.rb, line 47 def node(key) if block_given? value = ast[key] value = yield(value) unless value.nil? value else ast[key] end end
node?(key)
click to toggle source
# File lib/whois/record/scanners/scannable.rb, line 57 def node?(key) !ast[key].nil? end
parse()
click to toggle source
# File lib/whois/record/scanners/scannable.rb, line 61 def parse scanner = self.scanner.is_a?(Array) ? self.scanner.first : self.scanner settings = self.scanner.is_a?(Array) ? self.scanner.last : {} scanner.new(settings).parse(content_for_scanner) end
Private Instance Methods
ast()
click to toggle source
# File lib/whois/record/scanners/scannable.rb, line 69 def ast @ast ||= parse end