Module: Ruby::Rego::Parser::Helpers

Defined in:
lib/ruby/rego/parser.rb

Overview

Shared parsing helpers that do not depend on parser state.

Class Method Summary collapse

Class Method Details

.normalize_reference_base(base) ⇒ Object



173
174
175
176
177
178
179
# File 'lib/ruby/rego/parser.rb', line 173

def self.normalize_reference_base(base)
  path = [] # @type var path: Array[AST::RefArg]
  return [base, path] unless base.is_a?(AST::Reference)

  reference = base # @type var reference: AST::Reference
  [reference.base, reference.path.dup]
end

.precedence_of(operator) ⇒ Object



169
170
171
# File 'lib/ruby/rego/parser.rb', line 169

def self.precedence_of(operator)
  Precedence::BINARY.fetch(operator, Precedence::LOWEST)
end

.variable_name_for(token) ⇒ Object



181
182
183
184
185
186
187
188
189
190
191
# File 'lib/ruby/rego/parser.rb', line 181

def self.variable_name_for(token)
  token_type = token.type
  case token_type
  when TokenType::IDENT
    token.value.to_s
  when TokenType::UNDERSCORE
    "_"
  else
    IDENTIFIER_TOKEN_NAMES.fetch(token_type) { token_type.to_s.downcase }
  end
end