berkeley_library-util 0.1.4 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 57ff7fc89570ad61496f1587934e40dc18752df9cd99d766f591c4fe03fcde51
4
- data.tar.gz: e0bc0403c067c04801683e12de79a569721332ac23c770a05a0a0fde41842214
3
+ metadata.gz: a17e4e3e2e6e03e0dda795450e724650a0a7f7ae44db3b7a558bc371d8bed1b7
4
+ data.tar.gz: 106ff7e21c1e9568f4bdabc116023c292878f4fd629e5ee3ada934b2c2a10b43
5
5
  SHA512:
6
- metadata.gz: 6f7786f78fd64266dab9e424f61c03a95dc5a7eb294990bfef1d124699d5e0f6db7b53eaa2d3ca84c77eea1e096b11a5d227c679f5994699973b6274e3d6afe0
7
- data.tar.gz: a8a61db572a00d9d0ca6d41f23d2c76490196c14a6fdd8202b88d1f924fd5f9a32ebbea0e7811a4fba2a49a6fcec4ac40242cd79dfbaec8f37deaff046650436
6
+ metadata.gz: b4fbde8aa9e43a7ad7c414b92b488c5d2af1ae29c7f28a7ecd8f6ceb308e42c3c27a2256994362b15cba5133ec00feb32d5fe76f0b774577b292be6c2ba08528
7
+ data.tar.gz: 23c41cbed1b0befc458c8989792c45cf7429905b06e2deec72a88478f8eb7676a6e3be96dae5fa308239bb4f70b19acae421593711c20dd22d305f55262b0f64
@@ -1,18 +1,30 @@
1
1
  name: Build
2
- on: [ push, pull_request ]
2
+ on: [ push, pull_request, workflow_dispatch ]
3
3
  jobs:
4
4
  test:
5
5
  strategy:
6
6
  fail-fast: false
7
7
  matrix:
8
8
  os: [ ubuntu-latest, macos-latest ]
9
- ruby: [ '2.7', '3.0' ]
9
+ ruby: [ '2.7', '3.0', '3.1' ]
10
10
  runs-on: ${{ matrix.os }}
11
11
 
12
12
  steps:
13
- - uses: actions/checkout@v2
14
- - uses: ruby/setup-ruby@v1
13
+ - name: Check out repository
14
+ uses: actions/checkout@v2
15
+
16
+ - name: Set up Ruby
17
+ uses: ruby/setup-ruby@v1
15
18
  with:
16
19
  ruby-version: ${{ matrix.ruby }}
17
20
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
18
- - run: bundle exec rake
21
+
22
+ - name: Run checks
23
+ run: bundle exec rake
24
+
25
+ - name: Upload artifacts
26
+ if: ${{ always() }}
27
+ uses: actions/upload-artifact@v3
28
+ with:
29
+ name: artifacts
30
+ path: artifacts/**
@@ -11,6 +11,7 @@
11
11
  <inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
12
12
  <inspection_tool class="Rubocop" enabled="false" level="WARNING" enabled_by_default="false" />
13
13
  <inspection_tool class="RubyCaseWithoutElseBlockInspection" enabled="false" level="WARNING" enabled_by_default="false" />
14
+ <inspection_tool class="RubyMismatchedArgumentType" enabled="true" level="INFORMATION" enabled_by_default="true" />
14
15
  <inspection_tool class="RubyMismatchedReturnType" enabled="true" level="WARNING" enabled_by_default="true">
15
16
  <option name="myCheckNilability" value="false" />
16
17
  </inspection_tool>
data/.idea/util.iml CHANGED
@@ -5,83 +5,83 @@
5
5
  </component>
6
6
  <component name="NewModuleRootManager" inherit-compiler-output="true">
7
7
  <exclude-output />
8
- <content url="file://$MODULE_DIR$" />
8
+ <content url="file://$MODULE_DIR$">
9
+ <excludeFolder url="file://$MODULE_DIR$/artifacts" />
10
+ </content>
9
11
  <orderEntry type="jdk" jdkName="RVM: ruby-2.7.4" jdkType="RUBY_SDK" />
10
12
  <orderEntry type="sourceFolder" forTests="false" />
11
- <orderEntry type="library" scope="PROVIDED" name="actionpack (v7.0.2.4, RVM: ruby-2.7.4) [gem]" level="application" />
12
- <orderEntry type="library" scope="PROVIDED" name="actionview (v7.0.2.4, RVM: ruby-2.7.4) [gem]" level="application" />
13
- <orderEntry type="library" scope="PROVIDED" name="activesupport (v7.0.2.4, RVM: ruby-2.7.4) [gem]" level="application" />
14
- <orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.0, RVM: ruby-2.7.4) [gem]" level="application" />
13
+ <orderEntry type="library" scope="PROVIDED" name="actionpack (v7.0.4.2, RVM: ruby-2.7.4) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="actionview (v7.0.4.2, RVM: ruby-2.7.4) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="activesupport (v7.0.4.2, RVM: ruby-2.7.4) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.1, RVM: ruby-2.7.4) [gem]" level="application" />
15
17
  <orderEntry type="library" scope="PROVIDED" name="amazing_print (v1.4.0, RVM: ruby-2.7.4) [gem]" level="application" />
16
18
  <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.4) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="berkeley_library-logging (v0.2.6, RVM: ruby-2.7.4) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="berkeley_library-logging (v0.2.7, RVM: ruby-2.7.4) [gem]" level="application" />
18
20
  <orderEntry type="library" scope="PROVIDED" name="builder (v3.2.4, RVM: ruby-2.7.4) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="bundle-audit (v0.1.0, RVM: ruby-2.7.4) [gem]" level="application" />
20
21
  <orderEntry type="library" scope="PROVIDED" name="bundler (v2.2.31, RVM: ruby-2.7.4) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="bundler-audit (v0.9.0.1, RVM: ruby-2.7.4) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="ci_reporter (v2.0.0, RVM: ruby-2.7.4) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="ci_reporter (v2.1.0, RVM: ruby-2.7.4) [gem]" level="application" />
23
23
  <orderEntry type="library" scope="PROVIDED" name="ci_reporter_rspec (v1.0.0, RVM: ruby-2.7.4) [gem]" level="application" />
24
24
  <orderEntry type="library" scope="PROVIDED" name="colorize (v0.8.1, RVM: ruby-2.7.4) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.10, RVM: ruby-2.7.4) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.2.2, RVM: ruby-2.7.4) [gem]" level="application" />
26
26
  <orderEntry type="library" scope="PROVIDED" name="crack (v0.4.5, RVM: ruby-2.7.4) [gem]" level="application" />
27
27
  <orderEntry type="library" scope="PROVIDED" name="crass (v1.0.6, RVM: ruby-2.7.4) [gem]" level="application" />
28
28
  <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.4) [gem]" level="application" />
29
29
  <orderEntry type="library" scope="PROVIDED" name="docile (v1.4.0, RVM: ruby-2.7.4) [gem]" level="application" />
30
30
  <orderEntry type="library" scope="PROVIDED" name="domain_name (v0.5.20190701, RVM: ruby-2.7.4) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="dotenv (v2.7.6, RVM: ruby-2.7.4) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="erubi (v1.10.0, RVM: ruby-2.7.4) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="dotenv (v2.8.1, RVM: ruby-2.7.4) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="erubi (v1.12.0, RVM: ruby-2.7.4) [gem]" level="application" />
33
33
  <orderEntry type="library" scope="PROVIDED" name="hashdiff (v1.0.1, RVM: ruby-2.7.4) [gem]" level="application" />
34
34
  <orderEntry type="library" scope="PROVIDED" name="http-accept (v1.7.0, RVM: ruby-2.7.4) [gem]" level="application" />
35
- <orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.4, RVM: ruby-2.7.4) [gem]" level="application" />
36
- <orderEntry type="library" scope="PROVIDED" name="i18n (v1.10.0, RVM: ruby-2.7.4) [gem]" level="application" />
35
+ <orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.5, RVM: ruby-2.7.4) [gem]" level="application" />
36
+ <orderEntry type="library" scope="PROVIDED" name="i18n (v1.12.0, RVM: ruby-2.7.4) [gem]" level="application" />
37
+ <orderEntry type="library" scope="PROVIDED" name="json (v2.6.3, RVM: ruby-2.7.4) [gem]" level="application" />
37
38
  <orderEntry type="library" scope="PROVIDED" name="lograge (v0.12.0, RVM: ruby-2.7.4) [gem]" level="application" />
38
- <orderEntry type="library" scope="PROVIDED" name="loofah (v2.17.0, RVM: ruby-2.7.4) [gem]" level="application" />
39
+ <orderEntry type="library" scope="PROVIDED" name="loofah (v2.19.1, RVM: ruby-2.7.4) [gem]" level="application" />
39
40
  <orderEntry type="library" scope="PROVIDED" name="method_source (v1.0.0, RVM: ruby-2.7.4) [gem]" level="application" />
40
41
  <orderEntry type="library" scope="PROVIDED" name="mime-types (v3.4.1, RVM: ruby-2.7.4) [gem]" level="application" />
41
- <orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2022.0105, RVM: ruby-2.7.4) [gem]" level="application" />
42
- <orderEntry type="library" scope="PROVIDED" name="minitest (v5.15.0, RVM: ruby-2.7.4) [gem]" level="application" />
42
+ <orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2023.0218.1, RVM: ruby-2.7.4) [gem]" level="application" />
43
+ <orderEntry type="library" scope="PROVIDED" name="minitest (v5.18.0, RVM: ruby-2.7.4) [gem]" level="application" />
43
44
  <orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-2.7.4) [gem]" level="application" />
44
- <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.13.5, RVM: ruby-2.7.4) [gem]" level="application" />
45
- <orderEntry type="library" scope="PROVIDED" name="oj (v3.13.11, RVM: ruby-2.7.4) [gem]" level="application" />
45
+ <orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.14.2, RVM: ruby-2.7.4) [gem]" level="application" />
46
+ <orderEntry type="library" scope="PROVIDED" name="oj (v3.14.2, RVM: ruby-2.7.4) [gem]" level="application" />
46
47
  <orderEntry type="library" scope="PROVIDED" name="ougai (v1.9.1, RVM: ruby-2.7.4) [gem]" level="application" />
47
48
  <orderEntry type="library" scope="PROVIDED" name="parallel (v1.22.1, RVM: ruby-2.7.4) [gem]" level="application" />
48
- <orderEntry type="library" scope="PROVIDED" name="parser (v3.1.2.0, RVM: ruby-2.7.4) [gem]" level="application" />
49
- <orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.7, RVM: ruby-2.7.4) [gem]" level="application" />
50
- <orderEntry type="library" scope="PROVIDED" name="racc (v1.6.0, RVM: ruby-2.7.4) [gem]" level="application" />
51
- <orderEntry type="library" scope="PROVIDED" name="rack (v2.2.3, RVM: ruby-2.7.4) [gem]" level="application" />
52
- <orderEntry type="library" scope="PROVIDED" name="rack-test (v1.1.0, RVM: ruby-2.7.4) [gem]" level="application" />
49
+ <orderEntry type="library" scope="PROVIDED" name="parser (v3.2.1.1, RVM: ruby-2.7.4) [gem]" level="application" />
50
+ <orderEntry type="library" scope="PROVIDED" name="public_suffix (v5.0.1, RVM: ruby-2.7.4) [gem]" level="application" />
51
+ <orderEntry type="library" scope="PROVIDED" name="racc (v1.6.2, RVM: ruby-2.7.4) [gem]" level="application" />
52
+ <orderEntry type="library" scope="PROVIDED" name="rack (v2.2.6.3, RVM: ruby-2.7.4) [gem]" level="application" />
53
+ <orderEntry type="library" scope="PROVIDED" name="rack-test (v2.0.2, RVM: ruby-2.7.4) [gem]" level="application" />
53
54
  <orderEntry type="library" scope="PROVIDED" name="rails-dom-testing (v2.0.3, RVM: ruby-2.7.4) [gem]" level="application" />
54
- <orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.4.2, RVM: ruby-2.7.4) [gem]" level="application" />
55
- <orderEntry type="library" scope="PROVIDED" name="railties (v7.0.2.4, RVM: ruby-2.7.4) [gem]" level="application" />
55
+ <orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.5.0, RVM: ruby-2.7.4) [gem]" level="application" />
56
+ <orderEntry type="library" scope="PROVIDED" name="railties (v7.0.4.2, RVM: ruby-2.7.4) [gem]" level="application" />
56
57
  <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, RVM: ruby-2.7.4) [gem]" level="application" />
57
58
  <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.4) [gem]" level="application" />
58
- <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.3.1, RVM: ruby-2.7.4) [gem]" level="application" />
59
+ <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.7.0, RVM: ruby-2.7.4) [gem]" level="application" />
59
60
  <orderEntry type="library" scope="PROVIDED" name="request_store (v1.5.1, RVM: ruby-2.7.4) [gem]" level="application" />
60
61
  <orderEntry type="library" scope="PROVIDED" name="rest-client (v2.1.0, RVM: ruby-2.7.4) [gem]" level="application" />
61
62
  <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-2.7.4) [gem]" level="application" />
62
- <orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, RVM: ruby-2.7.4) [gem]" level="application" />
63
- <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, RVM: ruby-2.7.4) [gem]" level="application" />
64
- <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.0, RVM: ruby-2.7.4) [gem]" level="application" />
65
- <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.1, RVM: ruby-2.7.4) [gem]" level="application" />
66
- <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.0, RVM: ruby-2.7.4) [gem]" level="application" />
67
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.11.0, RVM: ruby-2.7.4) [gem]" level="application" />
68
- <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.17.0, RVM: ruby-2.7.4) [gem]" level="application" />
63
+ <orderEntry type="library" scope="PROVIDED" name="rspec (v3.12.0, RVM: ruby-2.7.4) [gem]" level="application" />
64
+ <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.12.1, RVM: ruby-2.7.4) [gem]" level="application" />
65
+ <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.12.2, RVM: ruby-2.7.4) [gem]" level="application" />
66
+ <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.12.3, RVM: ruby-2.7.4) [gem]" level="application" />
67
+ <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.12.0, RVM: ruby-2.7.4) [gem]" level="application" />
68
+ <orderEntry type="library" scope="PROVIDED" name="rubocop (v1.39.0, RVM: ruby-2.7.4) [gem]" level="application" />
69
+ <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.27.0, RVM: ruby-2.7.4) [gem]" level="application" />
69
70
  <orderEntry type="library" scope="PROVIDED" name="rubocop-rake (v0.6.0, RVM: ruby-2.7.4) [gem]" level="application" />
70
71
  <orderEntry type="library" scope="PROVIDED" name="rubocop-rspec (v2.4.0, RVM: ruby-2.7.4) [gem]" level="application" />
71
72
  <orderEntry type="library" scope="PROVIDED" name="ruby-prof (v0.17.0, RVM: ruby-2.7.4) [gem]" level="application" />
72
- <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, RVM: ruby-2.7.4) [gem]" level="application" />
73
- <orderEntry type="library" scope="PROVIDED" name="simplecov (v0.21.2, RVM: ruby-2.7.4) [gem]" level="application" />
73
+ <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.13.0, RVM: ruby-2.7.4) [gem]" level="application" />
74
+ <orderEntry type="library" scope="PROVIDED" name="simplecov (v0.22.0, RVM: ruby-2.7.4) [gem]" level="application" />
74
75
  <orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.12.3, RVM: ruby-2.7.4) [gem]" level="application" />
75
- <orderEntry type="library" scope="PROVIDED" name="simplecov-rcov (v0.3.1, RVM: ruby-2.7.4) [gem]" level="application" />
76
76
  <orderEntry type="library" scope="PROVIDED" name="simplecov_json_formatter (v0.1.4, RVM: ruby-2.7.4) [gem]" level="application" />
77
77
  <orderEntry type="library" scope="PROVIDED" name="thor (v1.2.1, RVM: ruby-2.7.4) [gem]" level="application" />
78
- <orderEntry type="library" scope="PROVIDED" name="typesafe_enum (v0.3.0, RVM: ruby-2.7.4) [gem]" level="application" />
79
- <orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.4, RVM: ruby-2.7.4) [gem]" level="application" />
78
+ <orderEntry type="library" scope="PROVIDED" name="typesafe_enum (v0.3.1, RVM: ruby-2.7.4) [gem]" level="application" />
79
+ <orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.6, RVM: ruby-2.7.4) [gem]" level="application" />
80
80
  <orderEntry type="library" scope="PROVIDED" name="unf (v0.1.4, RVM: ruby-2.7.4) [gem]" level="application" />
81
- <orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.8.1, RVM: ruby-2.7.4) [gem]" level="application" />
82
- <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.1.0, RVM: ruby-2.7.4) [gem]" level="application" />
83
- <orderEntry type="library" scope="PROVIDED" name="webmock (v3.14.0, RVM: ruby-2.7.4) [gem]" level="application" />
84
- <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.5.4, RVM: ruby-2.7.4) [gem]" level="application" />
81
+ <orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.8.2, RVM: ruby-2.7.4) [gem]" level="application" />
82
+ <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.4.2, RVM: ruby-2.7.4) [gem]" level="application" />
83
+ <orderEntry type="library" scope="PROVIDED" name="webmock (v3.18.1, RVM: ruby-2.7.4) [gem]" level="application" />
84
+ <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.6.7, RVM: ruby-2.7.4) [gem]" level="application" />
85
85
  </component>
86
86
  <component name="RModuleSettingsStorage">
87
87
  <LOAD_PATH number="2" string0="$MODULE_DIR$/lib" string1="$MODULE_DIR$/spec" />
@@ -91,19 +91,16 @@
91
91
  <option name="myRootTask">
92
92
  <RakeTaskImpl id="rake">
93
93
  <subtasks>
94
- <RakeTaskImpl id="bundle">
95
- <subtasks>
96
- <RakeTaskImpl description="Updates the ruby-advisory-db then runs bundle-audit" fullCommand="bundle:audit" id="audit" />
97
- </subtasks>
98
- </RakeTaskImpl>
99
94
  <RakeTaskImpl description="Run all specs in spec directory, with coverage" fullCommand="coverage" id="coverage" />
100
- <RakeTaskImpl description="Run tests, check test coverage, check code style, check for vulnerabilities, build gem" fullCommand="default" id="default" />
101
- <RakeTaskImpl description="Build berkeley_library-util.gemspec as berkeley_library-util-0.1.1.gem" fullCommand="gem" id="gem" />
95
+ <RakeTaskImpl description="Run tests, check test coverage, check code style, build gem" fullCommand="default" id="default" />
96
+ <RakeTaskImpl description="Build berkeley_library-util.gemspec as berkeley_library-util-0.1.6.gem" fullCommand="gem" id="gem" />
102
97
  <RakeTaskImpl description="Run RuboCop with auto-correct, and output results to console" fullCommand="ra" id="ra" />
103
98
  <RakeTaskImpl description="Run rubocop with HTML output" fullCommand="rubocop" id="rubocop" />
104
99
  <RakeTaskImpl id="rubocop">
105
100
  <subtasks>
106
- <RakeTaskImpl description="Auto-correct RuboCop offenses" fullCommand="rubocop:auto_correct" id="auto_correct" />
101
+ <RakeTaskImpl description="Autocorrect RuboCop offenses (only when it's safe)" fullCommand="rubocop:autocorrect" id="autocorrect" />
102
+ <RakeTaskImpl description="Autocorrect RuboCop offenses (safe and unsafe)" fullCommand="rubocop:autocorrect_all" id="autocorrect_all" />
103
+ <RakeTaskImpl description="" fullCommand="rubocop:auto_correct" id="auto_correct" />
107
104
  </subtasks>
108
105
  </RakeTaskImpl>
109
106
  <RakeTaskImpl description="Run RSpec code examples" fullCommand="spec" id="spec" />
data/.rubocop.yml CHANGED
@@ -55,6 +55,10 @@ Style/CommentedKeyword:
55
55
  Style/Documentation:
56
56
  Enabled: false
57
57
 
58
+ # You say "cryptic", I say "compact"
59
+ Style/FormatString:
60
+ EnforcedStyle: percent
61
+
58
62
  # Adding more line noise to format strings will not improve them
59
63
  Style/FormatStringToken:
60
64
  Enabled: false
@@ -328,7 +332,162 @@ Style/SwapValues: # (new in 1.1)
328
332
  ############################################################
329
333
  # Added in RuboCop 1.10
330
334
 
331
- Gemspec/DateAssignment: # (new in 1.10)
332
- Enabled: true
333
335
  Style/HashConversion: # (new in 1.10)
334
336
  Enabled: true
337
+
338
+ ############################################################
339
+ # Added in RuboCop 1.12
340
+
341
+ Style/StringChars: # (new in 1.12)
342
+ Enabled: true
343
+
344
+ ############################################################
345
+ # Added in RuboCop 1.16
346
+
347
+ Lint/EmptyInPattern: # (new in 1.16)
348
+ Enabled: true
349
+ Style/InPatternThen: # (new in 1.16)
350
+ Enabled: true
351
+ Style/MultilineInPatternThen: # (new in 1.16)
352
+ Enabled: true
353
+ Style/QuotedSymbols: # (new in 1.16)
354
+ Enabled: true
355
+
356
+ ############################################################
357
+ # Added in RuboCop 1.18
358
+
359
+ Layout/LineEndStringConcatenationIndentation: # (new in 1.18)
360
+ Enabled: true
361
+
362
+ ############################################################
363
+ # Added in RuboCop 1.19
364
+
365
+ Lint/AmbiguousRange: # (new in 1.19)
366
+ Enabled: true
367
+ Style/RedundantSelfAssignmentBranch: # (new in 1.19)
368
+ Enabled: true
369
+
370
+ ############################################################
371
+ # Added in RuboCop 1.21
372
+
373
+ Lint/AmbiguousOperatorPrecedence: # (new in 1.21)
374
+ Enabled: true
375
+ Lint/IncompatibleIoSelectWithFiberScheduler: # (new in 1.21)
376
+ Enabled: true
377
+
378
+ ############################################################
379
+ # Added in RuboCop 1.22
380
+
381
+ Lint/RequireRelativeSelfPath: # (new in 1.22)
382
+ Enabled: true
383
+ Security/IoMethods: # (new in 1.22)
384
+ Enabled: true
385
+ Style/NumberedParameters: # (new in 1.22)
386
+ Enabled: true
387
+ Style/NumberedParametersLimit: # (new in 1.22)
388
+ Enabled: true
389
+ Style/SelectByRegexp: # (new in 1.22)
390
+ Enabled: true
391
+
392
+ ############################################################
393
+ # Added in RuboCop 1.23
394
+
395
+ Gemspec/RequireMFA: # (new in 1.23)
396
+ Enabled: true
397
+ Lint/UselessRuby2Keywords: # (new in 1.23)
398
+ Enabled: true
399
+ Style/OpenStructUse: # (new in 1.23)
400
+ Enabled: true
401
+
402
+ ############################################################
403
+ # Added in RuboCop 1.24
404
+
405
+ Naming/BlockForwarding: # (new in 1.24)
406
+ Enabled: true
407
+ Style/FileRead: # (new in 1.24)
408
+ Enabled: true
409
+ Style/FileWrite: # (new in 1.24)
410
+ Enabled: true
411
+ Style/MapToHash: # (new in 1.24)
412
+ Enabled: true
413
+
414
+ ############################################################
415
+ # Added in RuboCop 1.26
416
+
417
+ Style/NestedFileDirname: # (new in 1.26)
418
+ Enabled: true
419
+
420
+ ############################################################
421
+ # Added in RuboCop 1.27
422
+
423
+ Lint/RefinementImportMethods: # (new in 1.27)
424
+ Enabled: true
425
+ Style/RedundantInitialize: # (new in 1.27)
426
+ Enabled: true
427
+
428
+ ############################################################
429
+ # Added in RuboCop 1.28
430
+
431
+ Security/CompoundHash: # (new in 1.28)
432
+ Enabled: true
433
+ Style/FetchEnvVar: # (new in 1.28)
434
+ Enabled: true
435
+ Style/ObjectThen: # (new in 1.28)
436
+ Enabled: true
437
+
438
+ ############################################################
439
+ # Added in RuboCop 1.29
440
+
441
+ Style/EnvHome: # (new in 1.29)
442
+ Enabled: true
443
+
444
+ ############################################################
445
+ # Added in RuboCop 1.30
446
+
447
+ Gemspec/DeprecatedAttributeAssignment: # (new in 1.30)
448
+ Enabled: true
449
+ Style/MapCompactWithConditionalBlock: # (new in 1.30)
450
+ Enabled: true
451
+
452
+ ############################################################
453
+ # Added in RuboCop 1.31
454
+
455
+ Layout/LineContinuationLeadingSpace: # (new in 1.31)
456
+ Enabled: true
457
+ Layout/LineContinuationSpacing: # (new in 1.31)
458
+ Enabled: true
459
+ Lint/ConstantOverwrittenInRescue: # (new in 1.31)
460
+ Enabled: true
461
+ Lint/NonAtomicFileOperation: # (new in 1.31)
462
+ Enabled: true
463
+
464
+ ############################################################
465
+ # Added in RuboCop 1.32
466
+
467
+ Lint/RequireRangeParentheses: # (new in 1.32)
468
+ Enabled: true
469
+ Style/EmptyHeredoc: # (new in 1.32)
470
+ Enabled: true
471
+
472
+ ############################################################
473
+ # Added in RuboCop 1.35
474
+
475
+ Style/MagicCommentFormat: # (new in 1.35)
476
+ Enabled: true
477
+
478
+ ############################################################
479
+ # Added in RuboCop 1.37
480
+
481
+ Lint/DuplicateMagicComment: # (new in 1.37)
482
+ Enabled: true
483
+ Style/OperatorMethodCall: # (new in 1.37)
484
+ Enabled: true
485
+ Style/RedundantStringEscape: # (new in 1.37)
486
+ Enabled: true
487
+
488
+ ############################################################
489
+ # Added in RuboCop 1.38
490
+
491
+ Style/RedundantEach: # (new in 1.38)
492
+ Enabled: true
493
+
data/.simplecov CHANGED
@@ -1,8 +1,7 @@
1
- require 'simplecov-rcov'
2
-
3
- SimpleCov.start 'rails' do
1
+ SimpleCov.start do
4
2
  add_filter 'module_info.rb'
5
- coverage_dir 'artifacts'
6
- formatter SimpleCov::Formatter::RcovFormatter
7
- minimum_coverage 100
3
+ coverage_dir 'artifacts/coverage'
4
+
5
+ enable_coverage :branch
6
+ minimum_coverage line: 100, branch: 100
8
7
  end
data/CHANGES.md CHANGED
@@ -1,3 +1,20 @@
1
+ # 0.1.6 (2023-03-09)
2
+
3
+ - Fix issue in `Requester` where query parameters would not be appended properly
4
+ to URLs that already included a query string.
5
+ - Fix issue in `URIs#append` (and `Appender`) where `?` would not be accepted in
6
+ query strings or fragments, contrary to RFC 3986 §3.
7
+ - Fix documentation for `Arrays#find_indices`.
8
+ - Fix issue where `Arrays#find_index` would raise a confusing `NameError`
9
+ instead of a helpful `ArgumentError` if passed too many arguments.
10
+
11
+ # 0.1.5 (2022-09-16)
12
+
13
+ - Adds `URIs#path_escape` to escape URL path segments
14
+ - Adds `URIs#head` and `URIs#head_response`, to make a HEAD request and return the HTTP status code
15
+ and raw response object, respectively
16
+ - Clarifies documentation for `URIs#get` and `URIs#get_response` regarding unsuccessful requests
17
+
1
18
  # 0.1.4 (2022-07-20)
2
19
 
3
20
  - Adds `URIs#safe_parse_uri`, which returns `nil` for invalid URLs (unlike `URIs#uri_or_nil`, which
data/Rakefile CHANGED
@@ -16,5 +16,5 @@ ENV['RAILS_ENV'] = 'test' if ENV['CI']
16
16
  # ------------------------------------------------------------
17
17
  # Custom tasks
18
18
 
19
- desc 'Run tests, check test coverage, check code style, check for vulnerabilities, build gem'
20
- task default: %i[coverage rubocop bundle:audit gem]
19
+ desc 'Run tests, check test coverage, check code style, build gem'
20
+ task default: %i[coverage rubocop gem]
@@ -17,7 +17,6 @@ Gem::Specification.new do |spec|
17
17
  spec.homepage = BerkeleyLibrary::Util::ModuleInfo::HOMEPAGE
18
18
 
19
19
  spec.files = `git ls-files -z`.split("\x0")
20
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
20
  spec.require_paths = ['lib']
22
21
 
23
22
  spec.required_ruby_version = ruby_version
@@ -26,17 +25,17 @@ Gem::Specification.new do |spec|
26
25
  spec.add_dependency 'rest-client', '~> 2.1'
27
26
  spec.add_dependency 'typesafe_enum', '~> 0.3'
28
27
 
29
- spec.add_development_dependency 'bundle-audit', '~> 0.1'
30
28
  spec.add_development_dependency 'ci_reporter_rspec', '~> 1.0'
31
29
  spec.add_development_dependency 'colorize', '~> 0.8'
32
30
  spec.add_development_dependency 'dotenv', '~> 2.7'
33
31
  spec.add_development_dependency 'rake', '~> 13.0'
34
32
  spec.add_development_dependency 'rspec', '~> 3.10'
35
- spec.add_development_dependency 'rubocop', '= 1.11'
36
- spec.add_development_dependency 'rubocop-rake', '~> 0.5'
37
- spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
33
+ spec.add_development_dependency 'rubocop', '= 1.39'
34
+ spec.add_development_dependency 'rubocop-rake', '= 0.6.0'
35
+ spec.add_development_dependency 'rubocop-rspec', '= 2.4.0'
38
36
  spec.add_development_dependency 'ruby-prof', '~> 0.17.0'
39
37
  spec.add_development_dependency 'simplecov', '~> 0.21'
40
- spec.add_development_dependency 'simplecov-rcov', '~> 0.2'
41
38
  spec.add_development_dependency 'webmock', '~> 3.12'
39
+
40
+ spec.metadata['rubygems_mfa_required'] = 'true'
42
41
  end
@@ -45,7 +45,7 @@ module BerkeleyLibrary
45
45
  # returns an array the length of the subset, containing for each element in
46
46
  # the subset the index of the corresponding element in the superset.
47
47
  #
48
- # @overload find_matching_indices(for_array:, in_array:)
48
+ # @overload find_indices(for_array:, in_array:)
49
49
  # For each value in `for_array`, finds the index of the first equal value
50
50
  # in `in_array` after the previously matched value.
51
51
  # @param in_array [Array] the list of values to look in
@@ -53,7 +53,7 @@ module BerkeleyLibrary
53
53
  # @return [Array<Integer>, nil] the indices in `in_array` of each value in `for_array`,
54
54
  # or `nil` if not all values could be found
55
55
  #
56
- # @overload find_matching_indices(for_array:, in_array:)
56
+ # @overload find_indices(for_array:, in_array:)
57
57
  # For each value in `for_array`, finds the index of the first value
58
58
  # in `in_array` after the previously matched value that matches
59
59
  # the specified match function.
@@ -90,7 +90,7 @@ module BerkeleyLibrary
90
90
  # @param start_index [Integer] the index to start with
91
91
  # @return [Enumerator] a new enumerator
92
92
  def find_index(*args, in_array:, start_index: 0, &block)
93
- raise ArgumentError, "wrong number of arguments (given #{value.length}, expected 0..1" if args.size > 1
93
+ raise ArgumentError, "wrong number of arguments (given #{args.length}, expected 0..1" if args.size > 1
94
94
  return Enumerator.new { |y| find_index(in_array: in_array, start_index: start_index, &y) } if args.empty? && !block_given?
95
95
  return unless (relative_index = in_array[start_index..].find_index(*args, &block))
96
96
 
@@ -11,8 +11,8 @@ module BerkeleyLibrary
11
11
  end
12
12
 
13
13
  def parent_exists?(path)
14
- path.respond_to?(:parent) && path.parent.exist? ||
15
- path.respond_to?(:to_str) && Pathname.new(path).parent.exist?
14
+ (path.respond_to?(:parent) && path.parent.exist?) ||
15
+ (path.respond_to?(:to_str) && Pathname.new(path).parent.exist?)
16
16
  end
17
17
 
18
18
  # Returns true if `obj` is close enough to an IO object for Nokogiri
@@ -7,7 +7,7 @@ module BerkeleyLibrary
7
7
  SUMMARY = 'Miscellaneous Ruby utilities for the UC Berkeley Library'.freeze
8
8
  DESCRIPTION = 'A collection of miscellaneous Ruby routines for the UC Berkeley Library.'.freeze
9
9
  LICENSE = 'MIT'.freeze
10
- VERSION = '0.1.4'.freeze
10
+ VERSION = '0.1.6'.freeze
11
11
  HOMEPAGE = 'https://github.com/BerkeleyLibrary/util'.freeze
12
12
  end
13
13
  end
@@ -22,10 +22,7 @@ module BerkeleyLibrary
22
22
 
23
23
  @elements = elements.map(&:to_s)
24
24
  @elements.each_with_index do |element, elem_index|
25
- next start_query_at(elem_index) if element.include?('?')
26
- next start_fragment_at(elem_index) if element.include?('#')
27
-
28
- add_element(element)
25
+ handle_element(element, elem_index)
29
26
  end
30
27
  end
31
28
 
@@ -44,6 +41,16 @@ module BerkeleyLibrary
44
41
 
45
42
  private
46
43
 
44
+ def handle_element(element, elem_index)
45
+ h_index = element.index('#')
46
+ q_index = element.index('?')
47
+ # per RFC 3986 §3, fragment (or query) can contain '?', but query can't contain '#'
48
+ return start_fragment_at(elem_index) if h_index && (q_index.nil? || h_index < q_index)
49
+ return start_query_at(elem_index) if q_index && !(in_query? || in_fragment?)
50
+
51
+ add_element(element)
52
+ end
53
+
47
54
  def state
48
55
  @state ||= :path
49
56
  end
@@ -77,24 +84,21 @@ module BerkeleyLibrary
77
84
  end
78
85
 
79
86
  def start_query_at(elem_index)
80
- raise URI::InvalidComponentError, err_query_after_fragment(elem_index) if in_fragment?
81
- raise URI::InvalidComponentError, err_too_many_queries(elem_index) unless query_elements.empty?
82
-
83
87
  handle_query_start(elem_index)
84
88
  @state = :query
85
89
  end
86
90
 
87
91
  def start_fragment_at(elem_index)
88
92
  raise URI::InvalidComponentError, err_too_many_fragments(elem_index) unless fragment_elements.empty?
89
- raise URI::InvalidComponentError, err_query_after_fragment(elem_index) if query_after_fragment?(elem_index)
93
+ raise URI::InvalidComponentError, err_too_many_fragments(elem_index) if too_many_fragments?(elem_index)
90
94
 
91
95
  handle_fragment_start(elem_index)
92
96
  @state = :fragment
93
97
  end
94
98
 
95
- def query_after_fragment?(elem_index)
99
+ def too_many_fragments?(elem_index)
96
100
  e = elements[elem_index]
97
- e.index('?', e.index('#'))
101
+ e.index('#', 1 + e.index('#'))
98
102
  end
99
103
 
100
104
  def add_element(e)
@@ -122,7 +126,7 @@ module BerkeleyLibrary
122
126
  return q_start unless (f_index = q_start.index('#'))
123
127
 
124
128
  next_index = elem_index + 1
125
- q_start, q_next = split_around(q_start, f_index) # NOTE: this doesn't return the '#'
129
+ q_start, q_next = split_around(q_start, f_index) # NOTE: this doesn't return the '#'
126
130
  elements[next_index] = "##{q_next}#{elements[next_index]}" # so we prepend one here
127
131
  q_start
128
132
  end
@@ -146,14 +150,6 @@ module BerkeleyLibrary
146
150
  [s[0...i], s[(i + 1)..]]
147
151
  end
148
152
 
149
- def err_too_many_queries(elem_index)
150
- "#{elements[elem_index].inspect}: URI already has a query string: #{query.inspect}"
151
- end
152
-
153
- def err_query_after_fragment(elem_index)
154
- "#{elements[elem_index].inspect}: Query delimiter '?' cannot follow fragment delimeter '#'"
155
- end
156
-
157
153
  def err_too_many_fragments(elem_index)
158
154
  "#{elements[elem_index].inspect}: URI already has a fragment: #{fragment.inspect}"
159
155
  end