public_suffix 2.0.5 → 4.0.7
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 +5 -5
- data/.github/FUNDING.yml +12 -0
- data/.github/dependabot.yml +8 -0
- data/.github/workflows/release.yml +16 -0
- data/.github/workflows/tests.yml +28 -0
- data/.gitignore +5 -8
- data/.rubocop.yml +19 -1
- data/{.rubocop_defaults.yml → .rubocop_opinionated.yml} +62 -34
- data/CHANGELOG.md +156 -54
- data/Gemfile +9 -5
- data/LICENSE.txt +1 -1
- data/README.md +44 -15
- data/Rakefile +9 -4
- data/SECURITY.md +104 -0
- data/bin/console +15 -0
- data/data/list.txt +3163 -973
- data/lib/public_suffix/domain.rb +4 -4
- data/lib/public_suffix/errors.rb +3 -1
- data/lib/public_suffix/list.rb +78 -117
- data/lib/public_suffix/rule.rb +54 -62
- data/lib/public_suffix/version.rb +8 -3
- data/lib/public_suffix.rb +38 -32
- data/public_suffix.gemspec +9 -5
- data/test/.empty +2 -0
- data/test/acceptance_test.rb +43 -31
- data/test/benchmarks/bm_find.rb +66 -0
- data/test/benchmarks/bm_find_all.rb +102 -0
- data/test/benchmarks/bm_names.rb +91 -0
- data/test/benchmarks/bm_select.rb +26 -0
- data/test/benchmarks/bm_select_incremental.rb +25 -0
- data/test/benchmarks/bm_valid.rb +101 -0
- data/test/profilers/domain_profiler.rb +12 -0
- data/test/profilers/find_profiler.rb +12 -0
- data/test/profilers/find_profiler_jp.rb +12 -0
- data/test/{initialization_profiler.rb → profilers/initialization_profiler.rb} +1 -1
- data/test/profilers/list_profsize.rb +11 -0
- data/test/profilers/object_binsize.rb +57 -0
- data/test/psl_test.rb +7 -4
- data/test/test_helper.rb +3 -14
- data/test/unit/domain_test.rb +17 -15
- data/test/unit/errors_test.rb +2 -0
- data/test/unit/list_test.rb +54 -72
- data/test/unit/public_suffix_test.rb +24 -22
- data/test/unit/rule_test.rb +77 -79
- metadata +32 -70
- data/.ruby-gemset +0 -1
- data/.travis.yml +0 -23
- data/test/benchmark_helper.rb +0 -4
- data/test/execution_profiler.rb +0 -14
- data/test/performance_benchmark.rb +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4ea7129dc0659a87fad96459afefddaafdb4280eac62895e036ce1e2bcf14d91
|
4
|
+
data.tar.gz: a335705e6ba76d959f52b3e4acea7be1f97c472af3b05a34cd15bae9a3301582
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d1a8d2f55e733e6f2ed7f7ed233cda997e55b0838b2926488c15e86586a72329ee2392af7ccc94dd3a5b04c60f3bbd0358fe38c0f4e82e0c13ae513a0dafdf4
|
7
|
+
data.tar.gz: aced9afff807ed3c71457871d68b56f7288cff8e5379da534f9deccea735ca1911074b7f300795f021e7b17a1ccf4ced27630efd3d1dd667c10a998b611fb71c
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# These are supported funding model platforms
|
2
|
+
|
3
|
+
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
4
|
+
patreon: # Replace with a single Patreon username
|
5
|
+
open_collective: # Replace with a single Open Collective username
|
6
|
+
ko_fi: # Replace with a single Ko-fi username
|
7
|
+
tidelift: "rubygems/public_suffix"
|
8
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
9
|
+
liberapay: # Replace with a single Liberapay username
|
10
|
+
issuehunt: # Replace with a single IssueHunt username
|
11
|
+
otechie: # Replace with a single Otechie username
|
12
|
+
custom: # Replace with a single custom sponsorship URL
|
@@ -0,0 +1,16 @@
|
|
1
|
+
name: release
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- v*.*.*
|
7
|
+
jobs:
|
8
|
+
release:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@v2
|
12
|
+
- name: Release Gem
|
13
|
+
uses: cadwallion/publish-rubygems-action@8f9e0538302643309e4e43bf48cd34173ca48cfc
|
14
|
+
env:
|
15
|
+
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
|
16
|
+
RELEASE_COMMAND: rake release
|
@@ -0,0 +1,28 @@
|
|
1
|
+
name: Tests
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
pull_request:
|
6
|
+
workflow_dispatch:
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
build:
|
10
|
+
strategy:
|
11
|
+
matrix:
|
12
|
+
ruby-version:
|
13
|
+
- "2.6"
|
14
|
+
- "2.7"
|
15
|
+
- "3.0"
|
16
|
+
- "3.1"
|
17
|
+
platform: [ubuntu-latest]
|
18
|
+
runs-on: ${{ matrix.platform }}
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v2
|
21
|
+
- name: Set up Ruby
|
22
|
+
uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
ruby-version: ${{ matrix.ruby-version }}
|
25
|
+
- name: Install dependencies
|
26
|
+
run: bundle install
|
27
|
+
- name: Run tests
|
28
|
+
run: bundle exec rake
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
inherit_from:
|
2
|
-
- .
|
2
|
+
- .rubocop_opinionated.yml
|
3
3
|
|
4
4
|
AllCops:
|
5
5
|
Exclude:
|
@@ -10,9 +10,27 @@ AllCops:
|
|
10
10
|
- 'vendor/**/*'
|
11
11
|
# Exclude artifacts
|
12
12
|
- 'pkg/**/*'
|
13
|
+
# Other
|
14
|
+
- 'test/benchmarks/**/*'
|
15
|
+
- 'test/profilers/**/*'
|
16
|
+
|
17
|
+
# I often use @_variable to avoid clashing.
|
18
|
+
Naming/MemoizedInstanceVariableName:
|
19
|
+
Enabled: false
|
13
20
|
|
14
21
|
Style/ClassAndModuleChildren:
|
15
22
|
Exclude:
|
16
23
|
- 'spec/**/*_spec.rb'
|
17
24
|
- 'test/**/*_test.rb'
|
18
25
|
|
26
|
+
# Dear Rubocop, I don't want to use String#strip_heredoc
|
27
|
+
Layout/HeredocIndentation:
|
28
|
+
Enabled: false
|
29
|
+
|
30
|
+
Style/WordArray:
|
31
|
+
Enabled: false
|
32
|
+
MinSize: 3
|
33
|
+
|
34
|
+
Style/SymbolArray:
|
35
|
+
Enabled: false
|
36
|
+
MinSize: 3
|
@@ -5,9 +5,21 @@ AllCops:
|
|
5
5
|
# Exclude vendored folders
|
6
6
|
- 'tmp/**/*'
|
7
7
|
- 'vendor/**/*'
|
8
|
+
NewCops: enable
|
8
9
|
|
9
|
-
|
10
|
+
# [codesmell]
|
11
|
+
Layout/LineLength:
|
10
12
|
Enabled: false
|
13
|
+
Exclude:
|
14
|
+
- 'spec/**/*_spec.rb'
|
15
|
+
- 'test/**/*_test.rb'
|
16
|
+
Max: 100
|
17
|
+
|
18
|
+
Lint/ConstantDefinitionInBlock:
|
19
|
+
Exclude:
|
20
|
+
- 'Rakefile'
|
21
|
+
- 'spec/**/*'
|
22
|
+
- 'test/**/*'
|
11
23
|
|
12
24
|
# [codesmell]
|
13
25
|
Metrics/AbcSize:
|
@@ -16,26 +28,47 @@ Metrics/AbcSize:
|
|
16
28
|
- 'spec/**/*_spec.rb'
|
17
29
|
- 'test/**/*_test.rb'
|
18
30
|
|
31
|
+
# [codesmell]
|
32
|
+
Metrics/BlockLength:
|
33
|
+
Enabled: false
|
34
|
+
|
35
|
+
# [codesmell]
|
36
|
+
Metrics/CyclomaticComplexity:
|
37
|
+
Enabled: false
|
38
|
+
Exclude:
|
39
|
+
- 'spec/**/*_spec.rb'
|
40
|
+
- 'test/**/*_test.rb'
|
41
|
+
|
19
42
|
# [codesmell]
|
20
43
|
Metrics/ClassLength:
|
44
|
+
Enabled: false
|
21
45
|
Exclude:
|
22
46
|
- 'spec/**/*_spec.rb'
|
23
47
|
- 'test/**/*_test.rb'
|
24
48
|
|
25
49
|
# [codesmell]
|
26
50
|
Metrics/MethodLength:
|
51
|
+
Enabled: false
|
27
52
|
Exclude:
|
28
53
|
- 'spec/**/*_spec.rb'
|
29
54
|
- 'test/**/*_test.rb'
|
30
|
-
Max:
|
55
|
+
Max: 10
|
31
56
|
|
32
57
|
# [codesmell]
|
33
|
-
Metrics/
|
58
|
+
Metrics/ModuleLength:
|
34
59
|
Enabled: false
|
35
60
|
Exclude:
|
36
61
|
- 'spec/**/*_spec.rb'
|
37
62
|
- 'test/**/*_test.rb'
|
38
|
-
|
63
|
+
|
64
|
+
# [codesmell]
|
65
|
+
Metrics/ParameterLists:
|
66
|
+
Enabled: false
|
67
|
+
Max: 5
|
68
|
+
|
69
|
+
# [codesmell]
|
70
|
+
Metrics/PerceivedComplexity:
|
71
|
+
Enabled: false
|
39
72
|
|
40
73
|
# Do not use "and" or "or" in conditionals, but for readability we can use it
|
41
74
|
# to chain executions. Just beware of operator order.
|
@@ -49,17 +82,23 @@ Style/Documentation:
|
|
49
82
|
|
50
83
|
# Double empty lines are useful to separate conceptually different methods
|
51
84
|
# in the same class or module.
|
52
|
-
|
85
|
+
Layout/EmptyLines:
|
53
86
|
Enabled: false
|
54
87
|
|
55
88
|
# In most cases, a space is nice. Sometimes, it's not.
|
56
89
|
# Just be consistent with the rest of the surrounding code.
|
57
|
-
|
90
|
+
Layout/EmptyLinesAroundClassBody:
|
58
91
|
Enabled: false
|
59
92
|
|
60
93
|
# In most cases, a space is nice. Sometimes, it's not.
|
61
94
|
# Just be consistent with the rest of the surrounding code.
|
62
|
-
|
95
|
+
Layout/EmptyLinesAroundModuleBody:
|
96
|
+
Enabled: false
|
97
|
+
|
98
|
+
# This is quite buggy, as it doesn't recognize double lines.
|
99
|
+
# Double empty lines are useful to separate conceptually different methods
|
100
|
+
# in the same class or module.
|
101
|
+
Layout/EmptyLineBetweenDefs:
|
63
102
|
Enabled: false
|
64
103
|
|
65
104
|
# I personally don't care about the format style.
|
@@ -68,38 +107,28 @@ Style/EmptyLinesAroundModuleBody:
|
|
68
107
|
Style/FormatString:
|
69
108
|
Enabled: false
|
70
109
|
|
71
|
-
#
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
# :default => :test
|
76
|
-
# that looks nicer with the old rocket syntax.
|
77
|
-
- 'Rakefile'
|
78
|
-
|
79
|
-
# Array indentation should be considered like MultilineMethodCallIndentation indentation
|
80
|
-
# and use 4 spaces instead of 2.
|
81
|
-
Style/IndentArray:
|
82
|
-
IndentationWidth: 4
|
83
|
-
|
84
|
-
# Hash indentation should be considered like MultilineMethodCallIndentation indentation
|
85
|
-
# and use 4 spaces instead of 2.
|
86
|
-
Style/IndentHash:
|
87
|
-
IndentationWidth: 4
|
88
|
-
|
89
|
-
# Multi-line differs from standard indentation, they are indented twice.
|
90
|
-
Style/MultilineMethodCallIndentation:
|
91
|
-
EnforcedStyle: indented
|
92
|
-
IndentationWidth: 4
|
110
|
+
# Annotated tokens (like %<foo>s) are a good thing, but in most cases we don't need them.
|
111
|
+
# %s is a simpler and straightforward version that works in almost all cases. So don't complain.
|
112
|
+
Style/FormatStringToken:
|
113
|
+
Enabled: false
|
93
114
|
|
94
115
|
# unless is not always cool.
|
95
116
|
Style/NegatedIf:
|
96
117
|
Enabled: false
|
97
118
|
|
119
|
+
# For years, %w() has been the de-facto standard. A lot of libraries are using ().
|
120
|
+
# Switching to [] would be a nightmare.
|
121
|
+
Style/PercentLiteralDelimiters:
|
122
|
+
Enabled: false
|
123
|
+
|
98
124
|
# There are cases were the inline rescue is ok. We can either downgrade the severity,
|
99
125
|
# or rely on the developer judgement on a case-by-case basis.
|
100
126
|
Style/RescueModifier:
|
101
127
|
Enabled: false
|
102
128
|
|
129
|
+
Style/SymbolArray:
|
130
|
+
EnforcedStyle: brackets
|
131
|
+
|
103
132
|
# Sorry, but using trailing spaces helps readability.
|
104
133
|
#
|
105
134
|
# %w( foo bar )
|
@@ -108,7 +137,7 @@ Style/RescueModifier:
|
|
108
137
|
#
|
109
138
|
# %w( foo bar )
|
110
139
|
#
|
111
|
-
|
140
|
+
Layout/SpaceInsidePercentLiteralDelimiters:
|
112
141
|
Enabled: false
|
113
142
|
|
114
143
|
# Hate It or Love It, I prefer double quotes as this is more consistent
|
@@ -118,7 +147,9 @@ Style/StringLiterals:
|
|
118
147
|
|
119
148
|
# It's nice to be consistent. The trailing comma also allows easy reordering,
|
120
149
|
# and doesn't cause a diff in Git when you add a line to the bottom.
|
121
|
-
Style/
|
150
|
+
Style/TrailingCommaInArrayLiteral:
|
151
|
+
EnforcedStyleForMultiline: consistent_comma
|
152
|
+
Style/TrailingCommaInHashLiteral:
|
122
153
|
EnforcedStyleForMultiline: consistent_comma
|
123
154
|
|
124
155
|
Style/TrivialAccessors:
|
@@ -130,6 +161,3 @@ Style/TrivialAccessors:
|
|
130
161
|
# end
|
131
162
|
#
|
132
163
|
IgnoreClassMethods: true
|
133
|
-
|
134
|
-
Style/WordArray:
|
135
|
-
Enabled: false
|