linkhum-url 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +9 -6
- data/lib/linkhum/url.rb +9 -1
- metadata +32 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8aa891eed2cfe43008f162c21df1f7f475d6505
|
4
|
+
data.tar.gz: 08261faca4002474b5632f34a2e0c4feaaa067fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf51abd8b3e08070bb62627e69d633ad5801ddb061dbb68461313fd9af1a8b20bb87c2ee8dc534d9ec307c295ff8382202cb44c3122067405e73c96a1c8310d0
|
7
|
+
data.tar.gz: 032b83a347f6756256306e2f485d87b83fd42e2f7ed452b7a6af551c3f110496d6ad3186057816cc18c11fa10e88c256d05abe39b0154397d1c1283d92364557
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -10,6 +10,8 @@ scenes `addressable` gem is used to handle actual URL parsing.
|
|
10
10
|
This is a sister gem to
|
11
11
|
[`linkhum`](https://github.com/zverok/linkhum).
|
12
12
|
|
13
|
+
[](https://travis-ci.org/squadette/linkhum-url)
|
14
|
+
|
13
15
|
## Usage
|
14
16
|
|
15
17
|
`linkhum-url` has only one method: `Linkhum::URL.parse(url)`. It
|
@@ -24,19 +26,20 @@ embedding etc.
|
|
24
26
|
=> true
|
25
27
|
2.3.0 :002 > Linkhum::URL.parse("https://example.org")
|
26
28
|
=> {:human_readable=>"https://example.org", :url_encoded=>"https://example.org"}
|
27
|
-
2.3.0 :003 > Linkhum::URL.parse("https
|
28
|
-
=> {:human_readable=>"https
|
29
|
+
2.3.0 :003 > Linkhum::URL.parse("https://пивбар-хмель.рф/поиск.html?q=пивбар")
|
30
|
+
=> {:human_readable=>"https://пивбар-хмель.рф/поиск.html?q=пивбар", :url_encoded=>"https://xn----7sbcdsn0agvo0d1e.xn--p1ai/%D0%BF%D0%BE%D0%B8%D1%81%D0%BA.html?q=%D0%BF%D0%B8%D0%B2%D0%B1%D0%B0%D1%80"}
|
29
31
|
2.3.0 :004 > Linkhum::URL.parse("https://xn--80abcx8ak.xn--p1ai/%D0%BF%D0%BE%D0%B8%D1%81%D0%BA.html?q=%D0%BF%D0%B8%D0%B2%D0%B1%D0%B0%D1%80")
|
30
|
-
=> {:human_readable=>"https
|
32
|
+
=> {:human_readable=>"https://пивбар-хмель.рф/поиск.html?q=пивбар", :url_encoded=>"https://xn----7sbcdsn0agvo0d1e.xn--p1ai/%D0%BF%D0%BE%D0%B8%D1%81%D0%BA.html?q=%D0%BF%D0%B8%D0%B2%D0%B1%D0%B0%D1%80"}
|
31
33
|
|
32
34
|
## Install
|
33
35
|
|
34
36
|
$ sudo apt-get install idn # Debian/Ubuntu
|
35
|
-
$ brew install libidn # OS X
|
37
|
+
$ brew install libidn # Mac OS X
|
36
38
|
|
37
39
|
$ gem install linkhum-url
|
38
40
|
|
39
41
|
## License
|
40
42
|
|
41
|
-
`linkhum-url` released under MIT License.
|
42
|
-
|
43
|
+
`linkhum-url` released under MIT License.
|
44
|
+
|
45
|
+
Copyright (C) Alexey Makhotkin, 2016.
|
data/lib/linkhum/url.rb
CHANGED
@@ -29,6 +29,13 @@ module Linkhum
|
|
29
29
|
url_encoded[:path] = Addressable::URI.encode_component(au_path)
|
30
30
|
|
31
31
|
human_readable[:query] = Addressable::URI.unencode_component(au.query)
|
32
|
+
if au.query
|
33
|
+
decoded_query = human_readable[:query].dup
|
34
|
+
if !decoded_query.force_encoding(Encoding::UTF_8).valid_encoding?
|
35
|
+
human_readable[:query] = au.query
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
32
39
|
if au.query
|
33
40
|
# see above
|
34
41
|
au_query = au.query.dup
|
@@ -49,9 +56,10 @@ module Linkhum
|
|
49
56
|
|
50
57
|
private
|
51
58
|
def self.generate_url(parts)
|
59
|
+
userinfo_part = parts[:userinfo] ? "#{parts[:userinfo]}@" : ""
|
52
60
|
query_part = parts[:query] ? "?#{parts[:query]}" : ""
|
53
61
|
fragment_part = parts[:fragment] ? "##{parts[:fragment]}" : ""
|
54
|
-
"#{parts[:scheme]}://#{
|
62
|
+
"#{parts[:scheme]}://#{userinfo_part}#{parts[:host]}#{parts[:path]}#{query_part}#{fragment_part}"
|
55
63
|
end
|
56
64
|
end
|
57
65
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: linkhum-url
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey Makhotkin
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rspec
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: travis
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.8'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.8'
|
55
83
|
description: 'Input URL could be both human-readable and URL-encoded. Two URLs are
|
56
84
|
returned as result: human-readable and URL-encoded'
|
57
85
|
email: squadette@gmail.com
|
@@ -59,6 +87,7 @@ executables: []
|
|
59
87
|
extensions: []
|
60
88
|
extra_rdoc_files: []
|
61
89
|
files:
|
90
|
+
- CHANGELOG.md
|
62
91
|
- LICENSE.txt
|
63
92
|
- README.md
|
64
93
|
- lib/linkhum-url.rb
|
@@ -73,9 +102,9 @@ require_paths:
|
|
73
102
|
- lib
|
74
103
|
required_ruby_version: !ruby/object:Gem::Requirement
|
75
104
|
requirements:
|
76
|
-
- - "
|
105
|
+
- - "~>"
|
77
106
|
- !ruby/object:Gem::Version
|
78
|
-
version: '
|
107
|
+
version: '2.2'
|
79
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
109
|
requirements:
|
81
110
|
- - ">="
|