class GraphQL::Analysis::ReducerState

def call(visit_type, irep_node)

def call(visit_type, irep_node)
  @memo = @reducer.call(@memo, visit_type, irep_node)
rescue AnalysisError => err
  @errors << err
end

def finalize_reducer

Returns:
  • (Any) - final memo value
def finalize_reducer
  if @errors.any?
    @errors
  elsif reducer.respond_to?(:final_value)
    reducer.final_value(@memo)
  else
    @memo
  end
end

def initialize(reducer, query)

def initialize(reducer, query)
  @reducer = reducer
  @memo = initialize_reducer(reducer, query)
  @errors = []
end

def initialize_reducer(reducer, query)

Returns:
  • (Any) - initial memo value
def initialize_reducer(reducer, query)
  if reducer.respond_to?(:initial_value)
    reducer.initial_value(query)
  else
    nil
  end
end