class Matchd::Registry

Tthe dns pattern registry It basically delegates everything to a YAML::Store but handles the conversion of Regexp dns-patterns into YAML string keys and reverse.

Constants

LoadError

Attributes

rules[R]

Public Class Methods

load(data, registry_file = nil) click to toggle source
# File lib/matchd/registry.rb, line 40
def self.load(data, registry_file = nil)
  raise ParseError, registry_file unless data.is_a?(Hash) && data.key?("rules")

  rules = data["rules"]

  new(rules ? parse(rules) : [])
end
load_file(registry_file) click to toggle source

Loads a registry YAML file

# File lib/matchd/registry.rb, line 32
def self.load_file(registry_file)
  unless File.file?(registry_file)
    raise LoadError, "Registry file '#{registry_file}' does not exist"
  end

  load(YAML.load_file(registry_file), registry_file)
end
new(rules) click to toggle source
# File lib/matchd/registry.rb, line 24
def initialize(rules)
  raise ArgumentError unless rules.is_a?(Enumerable)
  @rules = rules
end
parse(rules) click to toggle source

Parses raw rule hash definitions (like those read from a YAML config) into `Matchd::Rule`s

@param rules [Array<Hash>] the raw rule definitions @return [Array<Matchd::Rule>]

# File lib/matchd/registry.rb, line 53
def self.parse(rules)
  rules = rules.is_a?(Array) ? rules : [rules]
  rules.map { |r| Matchd.Rule(r) }
end

Public Instance Methods

each(&block) click to toggle source
# File lib/matchd/registry.rb, line 58
def each(&block)
  rules.each(&block) if rules
end
valid?() click to toggle source
# File lib/matchd/registry.rb, line 62
def valid?
  none? { |r| r.is_a?(Matchd::Rule::Invalid) }
end