module MetasploitDataModels::Match::Parent::ClassMethods

@example Declaring children classes

class FirstChild < Metasploit::Model::Base
  extend MetasploitDataModels::Match::Child

  #
  # CONSTANTS
  #

  # Matches a range.
  MATCH_REGEXP = /\A\d+-\d+\z/

  #
  # Attributes
  #

  # @!attribute value
  #   The range
  #
  attr_accessor :value
end

class SecondChild < Metasploit::Model::Base
  extend MetasploitDataModels::Match::Child

  #
  # CONSTANTS
  #

  # Matches a range.
  MATCH_REGEXP = /\A\d+\z/

  #
  # Attributes
  #

  # @!attribute value
  #   The range
  #
  attr_accessor :value
end

class Parent
  include MetasploitDataModels::Match::Parent

  match_children_named %w{FirstChild SecondChild}
end

Public Instance Methods

match_child_names() click to toggle source

`Class#name` for classes that extend {MetasploitDataModels::Match::Child} and should be tested using `match`.

@return [Array<String>]

# File lib/metasploit_data_models/match/parent.rb, line 62
def match_child_names
  @match_child_names ||= []
end
match_children() click to toggle source

`Class`es on which to call `match` in {MetasploitDataModels::Match::Parent#match_child}

@return [Array<String>]

# File lib/metasploit_data_models/match/parent.rb, line 69
def match_children
  @match_children ||= match_child_names.map(&:constantize)
end
match_children_named(class_names) click to toggle source

@note `Class`es named `class_names` Register the given `class_names` as `Class#name`s for children classes for {MetasploitDataModels::Match::Parent#match_child}.

@return [Array<String>] class_names`

# File lib/metasploit_data_models/match/parent.rb, line 78
def match_children_named(class_names)
  @match_child_names = class_names
end