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 |