Actions
Feature #18594
openAdd a #to_h method on URI::Generic
Status:
Open
Assignee:
-
Target version:
-
Description
It's just surprisingly challenging to get a hash representation of a parsed URI where the keys are the component names and the values are the component values.
The shortest form I could come up with using only public methods on URI::Generic
is rather clumsy-feeling:
uri = ::URI.parse(url)
hsh = [uri.component, uri.select(*uri.component)].transpose.to_h
Hence this suggested patch:
diff --git a/lib/uri/generic.rb b/lib/uri/generic.rb
index cfa0de6b74..f27a07a53c 100644
--- a/lib/uri/generic.rb
+++ b/lib/uri/generic.rb
@@ -1367,6 +1367,13 @@ def to_s
str
end
+ #
+ # Returns a Hash representing the URI components
+ #
+ def to_h
+ [component, component_ary].transpose.to_h
+ end
+
#
# Compares two URIs.
#
Which would allow the much more ergonomic, idiomatic and terse usage:
uri = ::URI.parse(url)
hsh = uri.to_h
Also happy to put together tests/specs for that as required.
Actions
Like0
Like0Like0