diff --git a/spec/std/uri_spec.cr b/spec/std/uri_spec.cr index dbbb6fb3dbf6..e04e9bed7740 100644 --- a/spec/std/uri_spec.cr +++ b/spec/std/uri_spec.cr @@ -54,6 +54,18 @@ describe "URI" do end end + describe "#absolute?" do + it { URI.parse("http://www.example.com/foo").absolute?.should eq(true) } + it { URI.parse("http://www.example.com").absolute?.should eq(true) } + it { URI.parse("file://").absolute?.should eq(true) } + it { URI.parse("foo").absolute?.should eq(false) } + it { URI.parse("foo").absolute?.should eq(false) } + end + + describe "#relative?" do + it { URI.parse("/foo").relative?.should eq(true) } + end + describe "normalize" do it "removes dot notation from path" do cases = { diff --git a/src/uri.cr b/src/uri.cr index 47ef85aba1b2..15cb0ac5fb62 100644 --- a/src/uri.cr +++ b/src/uri.cr @@ -144,6 +144,16 @@ class URI end end + # Returns `true` if URI has a *scheme* specified. + def absolute? + @scheme ? true : false + end + + # Returns `true` if URI does not have a *scheme* specified. + def relative? + !absolute? + end + def to_s(io : IO) if scheme io << scheme