From e491e7d8e0e95c003b72b47fc3f25c5dd9d467b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Wed, 22 Oct 2014 18:36:48 +0200 Subject: [PATCH] Standards.URI: Reduce DWIM. Fixes issues with Roxen. --- lib/modules/Standards.pmod/URI.pike | 6 ++++-- lib/modules/Standards.pmod/testsuite.in | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/modules/Standards.pmod/URI.pike b/lib/modules/Standards.pmod/URI.pike index c7e47ea077..c5bb0de04f 100644 --- a/lib/modules/Standards.pmod/URI.pike +++ b/lib/modules/Standards.pmod/URI.pike @@ -265,9 +265,11 @@ void reparse_uri(this_program|string|void base_uri) // DWIM for "www.cnn.com" style input, when parsed in the context of // base "http://". - if( !scheme && this::base_uri?->scheme && - !sizeof(this::base_uri->authority) ) + if( !has_prefix(uri, "//") && !scheme && this::base_uri?->scheme && + !sizeof(this::base_uri->authority) && + !sizeof(this::base_uri->path)) { + DEBUG("DWIM authority: %O\n", uri); uri = "//"+uri; } diff --git a/lib/modules/Standards.pmod/testsuite.in b/lib/modules/Standards.pmod/testsuite.in index ff2964e620..ea1d26b69b 100644 --- a/lib/modules/Standards.pmod/testsuite.in +++ b/lib/modules/Standards.pmod/testsuite.in @@ -103,6 +103,9 @@ test_equal(Standards.URI("http://www.com/?a=b&c")->get_query_variables(),(["a":" test_equal(Standards.URI("http://www.com/?foo")->get_http_path_query(),"/?foo") test_equal(Standards.URI("http://www.com/?")->get_http_path_query(),"/?") test_equal(Standards.URI("http://www.com/")->get_http_path_query(),"/") +test_equal((string)Standards.URI("://"), "://") +test_equal((string)Standards.URI("/", "://"), ":///") +test_equal((string)Standards.URI("foo.bar", ":///"), ":///foo.bar") test_eval_error(Standards.URI("www.com")) test_eq((string)Standards.URI("www.com","http://"),"http://www.com") test_eq((string)Standards.URI("www.com/x?a=b#y","http://"),"http://www.com/x?a=b#y") -- GitLab