public_suffix 3.0.3 → 3.1.0
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/.rubocop_defaults.yml +2 -7
- data/.ruby-gemset +1 -1
- data/.travis.yml +4 -5
- data/CHANGELOG.md +7 -0
- data/Gemfile +3 -1
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/Rakefile +3 -1
- data/bin/console +1 -0
- data/data/list.txt +376 -93
- data/lib/public_suffix.rb +8 -4
- data/lib/public_suffix/domain.rb +4 -2
- data/lib/public_suffix/errors.rb +3 -1
- data/lib/public_suffix/list.rb +10 -6
- data/lib/public_suffix/rule.rb +3 -1
- data/lib/public_suffix/version.rb +5 -2
- data/public_suffix.gemspec +1 -1
- data/test/acceptance_test.rb +2 -0
- data/test/psl_test.rb +3 -0
- data/test/test_helper.rb +8 -3
- data/test/unit/domain_test.rb +2 -0
- data/test/unit/errors_test.rb +2 -0
- data/test/unit/list_test.rb +2 -0
- data/test/unit/public_suffix_test.rb +2 -0
- data/test/unit/rule_test.rb +2 -0
- metadata +4 -5
data/lib/public_suffix.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# = Public Suffix
|
2
4
|
#
|
3
5
|
# Domain name parser based on the Public Suffix List.
|
4
6
|
#
|
5
|
-
# Copyright (c) 2009-
|
7
|
+
# Copyright (c) 2009-2019 Simone Carletti <weppos@weppos.net>
|
6
8
|
|
7
9
|
require_relative "public_suffix/domain"
|
8
10
|
require_relative "public_suffix/version"
|
@@ -20,9 +22,9 @@ require_relative "public_suffix/list"
|
|
20
22
|
# but was originally created to meet the needs of browser manufacturers.
|
21
23
|
module PublicSuffix
|
22
24
|
|
23
|
-
DOT = "."
|
24
|
-
BANG = "!"
|
25
|
-
STAR = "*"
|
25
|
+
DOT = "."
|
26
|
+
BANG = "!"
|
27
|
+
STAR = "*"
|
26
28
|
|
27
29
|
# Parses +name+ and returns the {PublicSuffix::Domain} instance.
|
28
30
|
#
|
@@ -77,6 +79,7 @@ module PublicSuffix
|
|
77
79
|
if rule.decompose(what).last.nil?
|
78
80
|
raise DomainNotAllowed, "`#{what}` is not allowed according to Registry policy"
|
79
81
|
end
|
82
|
+
|
80
83
|
# rubocop:enable Style/IfUnlessModifier
|
81
84
|
|
82
85
|
decompose(what, rule)
|
@@ -169,6 +172,7 @@ module PublicSuffix
|
|
169
172
|
return DomainInvalid.new("Name is blank") if name.empty?
|
170
173
|
return DomainInvalid.new("Name starts with a dot") if name.start_with?(DOT)
|
171
174
|
return DomainInvalid.new("%s is not expected to contain a scheme" % name) if name.include?("://")
|
175
|
+
|
172
176
|
name
|
173
177
|
end
|
174
178
|
|
data/lib/public_suffix/domain.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# = Public Suffix
|
2
4
|
#
|
3
5
|
# Domain name parser based on the Public Suffix List.
|
4
6
|
#
|
5
|
-
# Copyright (c) 2009-
|
7
|
+
# Copyright (c) 2009-2019 Simone Carletti <weppos@weppos.net>
|
6
8
|
|
7
9
|
module PublicSuffix
|
8
10
|
|
@@ -43,7 +45,7 @@ module PublicSuffix
|
|
43
45
|
# Initializes with a +tld+, +sld+ and +trd+.
|
44
46
|
# @param [String] tld The TLD (extension)
|
45
47
|
# @param [String] sld The SLD (domain)
|
46
|
-
# @param [String]
|
48
|
+
# @param [String] trd The TRD (subdomain)
|
47
49
|
#
|
48
50
|
# @yield [self] Yields on self.
|
49
51
|
# @yieldparam [PublicSuffix::Domain] self The newly creates instance
|
data/lib/public_suffix/errors.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# = Public Suffix
|
2
4
|
#
|
3
5
|
# Domain name parser based on the Public Suffix List.
|
4
6
|
#
|
5
|
-
# Copyright (c) 2009-
|
7
|
+
# Copyright (c) 2009-2019 Simone Carletti <weppos@weppos.net>
|
6
8
|
|
7
9
|
module PublicSuffix
|
8
10
|
|
data/lib/public_suffix/list.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# = Public Suffix
|
2
4
|
#
|
3
5
|
# Domain name parser based on the Public Suffix List.
|
4
6
|
#
|
5
|
-
# Copyright (c) 2009-
|
7
|
+
# Copyright (c) 2009-2019 Simone Carletti <weppos@weppos.net>
|
6
8
|
|
7
9
|
module PublicSuffix
|
8
10
|
|
@@ -65,8 +67,8 @@ module PublicSuffix
|
|
65
67
|
# @param private_domains [Boolean] whether to ignore the private domains section
|
66
68
|
# @return [PublicSuffix::List]
|
67
69
|
def self.parse(input, private_domains: true)
|
68
|
-
comment_token = "//"
|
69
|
-
private_token = "===BEGIN PRIVATE DOMAINS==="
|
70
|
+
comment_token = "//"
|
71
|
+
private_token = "===BEGIN PRIVATE DOMAINS==="
|
70
72
|
section = nil # 1 == ICANN, 2 == PRIVATE
|
71
73
|
|
72
74
|
new do |list|
|
@@ -81,6 +83,7 @@ module PublicSuffix
|
|
81
83
|
# include private domains or stop scanner
|
82
84
|
when line.include?(private_token)
|
83
85
|
break if !private_domains
|
86
|
+
|
84
87
|
section = 2
|
85
88
|
|
86
89
|
# skip comments
|
@@ -116,6 +119,7 @@ module PublicSuffix
|
|
116
119
|
# @return [Boolean]
|
117
120
|
def ==(other)
|
118
121
|
return false unless other.is_a?(List)
|
122
|
+
|
119
123
|
equal?(other) || @rules == other.rules
|
120
124
|
end
|
121
125
|
alias eql? ==
|
@@ -170,6 +174,7 @@ module PublicSuffix
|
|
170
174
|
def find(name, default: default_rule, **options)
|
171
175
|
rule = select(name, **options).inject do |l, r|
|
172
176
|
return r if r.class == Rule::Exception
|
177
|
+
|
173
178
|
l.length > r.length ? l : r
|
174
179
|
end
|
175
180
|
rule || default
|
@@ -201,12 +206,11 @@ module PublicSuffix
|
|
201
206
|
|
202
207
|
loop do
|
203
208
|
match = @rules[query]
|
204
|
-
if !match.nil? && (ignore_private == false || match.private == false)
|
205
|
-
rules << entry_to_rule(match, query)
|
206
|
-
end
|
209
|
+
rules << entry_to_rule(match, query) if !match.nil? && (ignore_private == false || match.private == false)
|
207
210
|
|
208
211
|
index += 1
|
209
212
|
break if index >= parts.size
|
213
|
+
|
210
214
|
query = parts[index] + DOT + query
|
211
215
|
end
|
212
216
|
|
data/lib/public_suffix/rule.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# = Public Suffix
|
2
4
|
#
|
3
5
|
# Domain name parser based on the Public Suffix List.
|
4
6
|
#
|
5
|
-
# Copyright (c) 2009-
|
7
|
+
# Copyright (c) 2009-2019 Simone Carletti <weppos@weppos.net>
|
6
8
|
|
7
9
|
module PublicSuffix
|
8
10
|
|
@@ -1,10 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
1
4
|
# = Public Suffix
|
2
5
|
#
|
3
6
|
# Domain name parser based on the Public Suffix List.
|
4
7
|
#
|
5
|
-
# Copyright (c) 2009-
|
8
|
+
# Copyright (c) 2009-2019 Simone Carletti <weppos@weppos.net>
|
6
9
|
|
7
10
|
module PublicSuffix
|
8
11
|
# The current library version.
|
9
|
-
VERSION = "3.0
|
12
|
+
VERSION = "3.1.0"
|
10
13
|
end
|
data/public_suffix.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.description = "PublicSuffix can parse and decompose a domain name into top level domain, domain and subdomains."
|
13
13
|
s.licenses = ["MIT"]
|
14
14
|
|
15
|
-
s.required_ruby_version = ">= 2.
|
15
|
+
s.required_ruby_version = ">= 2.3"
|
16
16
|
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
s.files = `git ls-files`.split("\n")
|
data/test/acceptance_test.rb
CHANGED
data/test/psl_test.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "test_helper"
|
2
4
|
require "public_suffix"
|
3
5
|
|
@@ -13,6 +15,7 @@ class PslTest < Minitest::Test
|
|
13
15
|
line = line.strip
|
14
16
|
next if line.empty?
|
15
17
|
next if line.start_with?("//")
|
18
|
+
|
16
19
|
input, output = line.split(", ")
|
17
20
|
|
18
21
|
# handle the case of eval("null"), it must be eval("nil")
|
data/test/test_helper.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if ENV["COVERAGE"]
|
4
|
+
require "simplecov"
|
5
|
+
SimpleCov.start
|
6
|
+
|
7
|
+
require "codecov"
|
8
|
+
SimpleCov.formatter = SimpleCov::Formatter::Codecov
|
4
9
|
end
|
5
10
|
|
6
11
|
require "minitest/autorun"
|
data/test/unit/domain_test.rb
CHANGED
data/test/unit/errors_test.rb
CHANGED
data/test/unit/list_test.rb
CHANGED
data/test/unit/rule_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: public_suffix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simone Carletti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -116,15 +116,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
116
|
requirements:
|
117
117
|
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: '2.
|
119
|
+
version: '2.3'
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
|
-
|
127
|
-
rubygems_version: 2.7.3
|
126
|
+
rubygems_version: 3.0.3
|
128
127
|
signing_key:
|
129
128
|
specification_version: 4
|
130
129
|
summary: Domain name parser based on the Public Suffix List.
|