Class: GraphQL::Analysis::ReducerState
- Inherits:
 - 
      Object
      
        
- Object
 - GraphQL::Analysis::ReducerState
 
 
- Defined in:
 - lib/graphql/analysis/reducer_state.rb
 
Instance Attribute Summary collapse
- 
  
    
      #errors  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute errors.
 - 
  
    
      #memo  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Returns the value of attribute memo.
 - 
  
    
      #reducer  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute reducer.
 
Instance Method Summary collapse
- 
  
    
      #call(visit_type, irep_node)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
 - 
  
    
      #finalize_reducer  ⇒ Any 
    
    
  
  
  
  
  
  
  
  
  
    
Respond with any errors, if found.
 - 
  
    
      #initialize(reducer, query)  ⇒ ReducerState 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of ReducerState.
 
Constructor Details
#initialize(reducer, query) ⇒ ReducerState
Returns a new instance of ReducerState
      8 9 10 11 12  | 
    
      # File 'lib/graphql/analysis/reducer_state.rb', line 8 def initialize(reducer, query) @reducer = reducer @memo = initialize_reducer(reducer, query) @errors = [] end  | 
  
Instance Attribute Details
#errors ⇒ Object
Returns the value of attribute errors
      6 7 8  | 
    
      # File 'lib/graphql/analysis/reducer_state.rb', line 6 def errors @errors end  | 
  
#memo ⇒ Object
Returns the value of attribute memo
      6 7 8  | 
    
      # File 'lib/graphql/analysis/reducer_state.rb', line 6 def memo @memo end  | 
  
#reducer ⇒ Object (readonly)
Returns the value of attribute reducer
      5 6 7  | 
    
      # File 'lib/graphql/analysis/reducer_state.rb', line 5 def reducer @reducer end  | 
  
Instance Method Details
#call(visit_type, irep_node) ⇒ Object
      14 15 16 17 18  | 
    
      # File 'lib/graphql/analysis/reducer_state.rb', line 14 def call(visit_type, irep_node) @memo = @reducer.call(@memo, visit_type, irep_node) rescue AnalysisError => err @errors << err end  | 
  
#finalize_reducer ⇒ Any
Respond with any errors, if found. Otherwise, if the reducer accepts
final_value, send it the last memo value.
Otherwise, use the last value from the traversal.
      24 25 26 27 28 29 30 31 32  | 
    
      # File 'lib/graphql/analysis/reducer_state.rb', line 24 def finalize_reducer if @errors.any? @errors elsif reducer.respond_to?(:final_value) reducer.final_value(@memo) else @memo end end  |