linkhum-url 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +9 -6
  4. data/lib/linkhum/url.rb +9 -1
  5. metadata +32 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2499da4f4ea690201eb85d3f2e8942b90655629e
4
- data.tar.gz: c4738dc13d7dab8dba1008b89cce1c09d360fe13
3
+ metadata.gz: d8aa891eed2cfe43008f162c21df1f7f475d6505
4
+ data.tar.gz: 08261faca4002474b5632f34a2e0c4feaaa067fc
5
5
  SHA512:
6
- metadata.gz: c7dc9f9ec8fa62d742ff51a3cdeac046353f83833341f57c76d57b0e726dd54719bb22c70bf969f4109d3fdb08660fb376d7155c0b7e02ef4f24e3c55dc08bb2
7
- data.tar.gz: 1359bf86a29b802371fa7411068adda60fb7db20fd7793e533c27620867aac71de6cdc4450f17a68ca8046b56a10ed58fb80585bf235d4b16addac4b1e37ed88
6
+ metadata.gz: bf51abd8b3e08070bb62627e69d633ad5801ddb061dbb68461313fd9af1a8b20bb87c2ee8dc534d9ec307c295ff8382202cb44c3122067405e73c96a1c8310d0
7
+ data.tar.gz: 032b83a347f6756256306e2f485d87b83fd42e2f7ed452b7a6af551c3f110496d6ad3186057816cc18c11fa10e88c256d05abe39b0154397d1c1283d92364557
data/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ 0.1.1:
2
+
3
+ * Handle percent-encoded non-UTF8 query strings: return
4
+ percent-encoded value as human-readable (we have no way of guessing the original encoding);
5
+
6
+ 0.1.0:
7
+
8
+ * Initial release.
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
+ [![Build Status](https://travis-ci.org/squadette/linkhum-url.svg?branch=master)](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://пивбар.рф/поиск.html?q=пивбар")
28
- => {:human_readable=>"https://пивбар.рф/поиск.html?q=пивбар", :url_encoded=>"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"}
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://пивбар.рф/поиск.html?q=пивбар", :url_encoded=>"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"}
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. Copyright (C) Alexey
42
- Makhotkin, 2016.
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]}://#{parts[:userinfo]}#{parts[:host]}#{parts[:path]}#{query_part}#{fragment_part}"
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.0
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: '0'
107
+ version: '2.2'
79
108
  required_rubygems_version: !ruby/object:Gem::Requirement
80
109
  requirements:
81
110
  - - ">="