module Metasploit::Model::Search::Operator

# Declaring operator classes

## Interface

Operators do not need to subclass any specific superclass, but they are expected to define certain methods.

class MyOperator
  #
  # Instance Methods
  #

  # @param klass [Class] The klass on which `search_with` was called.
  def initialize(attributes={})
    # ...
  end

  # Description of what this operator searches for.
  #
  # @return [String]
  def help
    # ...
  end

  # Name of this operator.  The name of the operator is matched to the string before the ':' in a formatted
  # operation.
  #
  # @return [Symbol]
  def name
    # ...
  end

  # Creates a one or more operations based on `formatted_value`.
  #
  # @return [#operator, Array<#operator>] Operation with this operator as the operation's `operator`.
  def operate_on(formatted_value)
    # ...
  end
end

## Help

Instead of having define your own `#help` method for your operator `Class`, you can `include` {Metasploit::Model::Search::Operator::Help}.

{include:Metasploit::Model::Search::Operator::Help}

## {Metasploit::Model::Search::Operator::Base}

{include:Metasploit::Model::Search::Operator::Base}

## {Metasploit::Model::Search::Operator::Single}

{include:Metasploit::Model::Search::Operator::Single}