class Moguro::Processors::ContractProcessor

Constants

Rule

Attributes

clauses[R]

Public Class Methods

generate_type_validator(function, klass) click to toggle source
# File lib/moguro/processors/contract_processor.rb, line 37
def generate_type_validator(function, klass)
  ast = ContractParser.new(
    function.source
  ).parse

  processor = ContractProcessor.new(klass)
  processor.process(ast)
  processor.clauses
end
new(klass) click to toggle source
Calls superclass method
# File lib/moguro/processors/contract_processor.rb, line 19
def initialize(klass)
  @current_arg = nil
  @klass = klass
  @clauses = Clauses.new
  super()
end

Public Instance Methods

on_kwarg(node) click to toggle source
Calls superclass method
# File lib/moguro/processors/contract_processor.rb, line 26
def on_kwarg(node)
  process_args(node)
  super node
end
on_kwoptarg(node) click to toggle source
Calls superclass method
# File lib/moguro/processors/contract_processor.rb, line 31
def on_kwoptarg(node)
  process_args(node)
  super node
end

Private Instance Methods

current_clause() click to toggle source
# File lib/moguro/processors/contract_processor.rb, line 61
def current_clause
  clauses.last
end
process_args(node) click to toggle source
# File lib/moguro/processors/contract_processor.rb, line 50
def process_args(node)
  argument_key, _other = *node
  rotate_rule(argument_key)
  processor = ArgumentsProcessor.new(@klass, current_clause)
  processor.process(node)
end
rotate_rule(argument_key) click to toggle source
# File lib/moguro/processors/contract_processor.rb, line 57
def rotate_rule(argument_key)
  @clauses.add_verified_argument(argument_key)
end