ddfreyne/d-parse

View on GitHub
lib/d-parse/success.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module DParse
  class Success
    attr_reader :input
    attr_reader :pos
    attr_reader :data
    attr_reader :best_failure

    def initialize(input, pos, data: nil, best_failure: nil)
      @input = input
      @pos = pos
      @data = data
      @best_failure = best_failure
    end

    def map
      self.class.new(@input, @pos, data: yield(@data), best_failure: @best_failure)
    end

    def with_best_failure(failure)
      self.class.new(@input, @pos, data: @data, best_failure: failure)
    end

    def to_s
      "Success(#{@pos}; #{@data}#{@best_failure ? '; best failure = ' + best_failure.inspect : ''})"
    end

    def success?
      true
    end

    def inspect
      to_s
    end
  end
end