Sha256: 7d866f7aa490f98a8fa5c0e3aae211a6b94e66f27fcd39a92f62002233126fbb

Contents?: true

Size: 742 Bytes

Versions: 3

Compression:

Stored size: 742 Bytes

Contents

# frozen_string_literal: true

module Mutant
  module AST
    class Pattern
      class Source
        include Anima.new(:string)

        def initialize(**attributes)
          super

          @lines = string.split("\n")
        end

        def line(line_index)
          @lines.fetch(line_index)
        end

        class Location
          include Anima.new(:source, :range, :line_index, :line_start)

          def display
            "#{source.line(line_index)}\n#{prefix}#{carets}"
          end

        private

          def prefix
            ' ' * (range.begin - line_start)
          end

          def carets
            '^' * range.size
          end
        end
      end # Source
    end # Pattern
  end # AST
end # Mutant

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mutant-0.11.13 lib/mutant/ast/pattern/source.rb
mutant-0.11.12 lib/mutant/ast/pattern/source.rb
mutant-0.11.11 lib/mutant/ast/pattern/source.rb