Class: Mutant::Expression Private

Inherits:
Object
  • Object
show all
Includes:
AbstractType, Adamantium::Flat
Defined in:
lib/mutant/expression.rb,
lib/mutant/expression/method.rb,
lib/mutant/expression/parser.rb,
lib/mutant/expression/methods.rb,
lib/mutant/expression/namespace.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Abstract base class for match expression

Direct Known Subclasses

Method, Methods, Namespace

Defined Under Namespace

Classes: Method, Methods, Namespace, Parser

Constant Summary collapse

SCOPE_NAME_PATTERN =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

/(?<scope_name>#{fragment}(?:#{SCOPE_OPERATOR}#{fragment})*)/.freeze
SCOPE_SYMBOL_PATTERN =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

'(?<scope_symbol>[.#])'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.try_parse(input) ⇒ Expression?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Try to parse input into expression of receiver class

Parameters:

  • input (String)

Returns:

  • (Expression)

    when successful

  • (nil)

    otherwise



56
57
58
59
60
61
# File 'lib/mutant/expression.rb', line 56

def self.try_parse(input)
  match = self::REGEXP.match(input)
  return unless match
  names = anima.attribute_names
  new(Hash[names.zip(names.map(&match.method(:[])))])
end

Instance Method Details

#match_length(other) ⇒ Integer

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Match length with other expression

Parameters:

Returns:

  • (Integer)


30
31
32
33
34
35
36
# File 'lib/mutant/expression.rb', line 30

def match_length(other)
  if syntax.eql?(other.syntax)
    syntax.length
  else
    0
  end
end

#matcherMatcher

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Syntax of expression

Returns:



18
# File 'lib/mutant/expression.rb', line 18

abstract_method :matcher

#prefix?(other) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Test if expression is prefix

Parameters:

Returns:

  • (Boolean)


43
44
45
# File 'lib/mutant/expression.rb', line 43

def prefix?(other)
  !match_length(other).zero?
end

#syntaxString

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Syntax of expression

Returns:

  • (String)


23
# File 'lib/mutant/expression.rb', line 23

abstract_method :syntax