Module: Jade::Codegen::MethodNames

Extended by:
MethodNames
Included in:
MethodNames
Defined in:
lib/jade/codegen/method_names.rb

Constant Summary collapse

INTERFACE_METHODS =
{
  'Basics.Eq' => {
    '(==)' => '==',
  },
  'Basics.Comparable' => {
    'compare' => 'compare',
  },
  'Basics.Numeric' => {
    '(+)' => '+',
    '(-)' => '-',
    '(*)' => '*',
    '(/)' => '/',
  },
  'Basics.Appendable' => {
    '(++)' => '+',
  },
}.freeze
OPERATOR_INTERFACES =
INTERFACE_METHODS.keys.to_set.freeze
CALL_OPERATORS =
{
  'Basics.(==)'    => '==',
  'Basics.(!=)'    => '!=',
  'Basics.(<)'     => '<',
  'Basics.(>)'     => '>',
  'Basics.(<=)'    => '<=',
  'Basics.(>=)'    => '>=',
  'Basics.(+)'     => '+',
  'Basics.(-)'     => '-',
  'Basics.(*)'     => '*',
  'Basics.(/)'     => '/',
  'Basics.(++)'    => '+',
  'Basics.compare' => 'compare',
}.freeze

Instance Method Summary collapse

Instance Method Details

#call_operator(qualified_name) ⇒ Object



49
50
51
# File 'lib/jade/codegen/method_names.rb', line 49

def call_operator(qualified_name)
  CALL_OPERATORS[qualified_name]
end

#interface_method(interface_qname, fn_name) ⇒ Object



41
42
43
# File 'lib/jade/codegen/method_names.rb', line 41

def interface_method(interface_qname, fn_name)
  INTERFACE_METHODS.dig(interface_qname, fn_name)
end

#operator_interface?(interface_qname) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/jade/codegen/method_names.rb', line 45

def operator_interface?(interface_qname)
  OPERATOR_INTERFACES.include?(interface_qname)
end