Sha256: 16c603dd164fd6958bb42cce712b134a25390b89dcc08f4e4602f18160845a68
Contents?: true
Size: 1.7 KB
Versions: 1
Compression:
Stored size: 1.7 KB
Contents
# typed: strict # frozen_string_literal: true module RBI class Loc extend T::Sig class << self extend T::Sig sig { params(file: String, yarp_location: YARP::Location).returns(Loc) } def from_yarp(file, yarp_location) new( file: file, begin_line: yarp_location.start_line, end_line: yarp_location.end_line, begin_column: yarp_location.start_column, end_column: yarp_location.end_column + 1, # TODO: Why is this off by one? ) end end sig { returns(T.nilable(String)) } attr_reader :file sig { returns(T.nilable(Integer)) } attr_reader :begin_line, :end_line, :begin_column, :end_column sig do params( file: T.nilable(String), begin_line: T.nilable(Integer), end_line: T.nilable(Integer), begin_column: T.nilable(Integer), end_column: T.nilable(Integer), ).void end def initialize(file: nil, begin_line: nil, end_line: nil, begin_column: nil, end_column: nil) @file = file @begin_line = begin_line @end_line = end_line @begin_column = begin_column @end_column = end_column end sig { returns(String) } def to_s "#{file}:#{begin_line}:#{begin_column}-#{end_line}:#{end_column}" end sig { returns(T.nilable(String)) } def source file = self.file return unless file return unless ::File.file?(file) return ::File.read(file) unless begin_line && end_line string = String.new ::File.foreach(file).with_index do |line, line_number| string << line if line_number + 1 >= begin_line && line_number + 1 <= end_line end string end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rbi-0.1.0 | lib/rbi/loc.rb |