mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Parse source strings
This commit is contained in:
parent
268db53bf8
commit
4f3ca20741
2 changed files with 31 additions and 0 deletions
|
@ -54,4 +54,23 @@ describe Spectator::Source do
|
||||||
source.to_s.should match(/^(.+?)\:(\d+)$/)
|
source.to_s.should match(/^(.+?)\:(\d+)$/)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#parse" do
|
||||||
|
it "gets the absolute path" do
|
||||||
|
file = "foo.cr"
|
||||||
|
path = File.expand_path(file)
|
||||||
|
source = Spectator::Source.parse("#{file}:42")
|
||||||
|
source.file.should eq(path)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "gets the relative path" do
|
||||||
|
source = Spectator::Source.parse("foo.cr:42")
|
||||||
|
source.path.should eq("foo.cr")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "gets the line number" do
|
||||||
|
source = Spectator::Source.parse("foo.cr:42")
|
||||||
|
source.line.should eq(42)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,6 +11,18 @@ module Spectator
|
||||||
def initialize(@file, @line)
|
def initialize(@file, @line)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Parses a source from a string.
|
||||||
|
def self.parse(string)
|
||||||
|
# Make sure to handle multiple colons.
|
||||||
|
# If this ran on Windows, there's a possibility of a colon in the path.
|
||||||
|
# The last element should always be the line number.
|
||||||
|
parts = string.split(':')
|
||||||
|
path = parts[0...-1].join(':')
|
||||||
|
line = parts.last
|
||||||
|
file = File.expand_path(path)
|
||||||
|
self.new(file, line.to_i)
|
||||||
|
end
|
||||||
|
|
||||||
# The relative path to the file from the current directory.
|
# The relative path to the file from the current directory.
|
||||||
# If the file isn't in the current directory or a sub-directory,
|
# If the file isn't in the current directory or a sub-directory,
|
||||||
# then the absolute path is provided.
|
# then the absolute path is provided.
|
||||||
|
|
Loading…
Reference in a new issue