roqua-support 0.4.1 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0104ee377feaa85014f2a233e86c618a08de92e7b55cd273fe7832f491f070b4
4
- data.tar.gz: 7c04430ab277f7c69cb0d1cf8d54a0901cb127460b2b68e3b91ad3c01b171204
3
+ metadata.gz: 26f053a4b379494d15a9b24e9b8bc81911f3315c803f087dc0798bf668b762c3
4
+ data.tar.gz: 564d0a8c6a2faf7dee1074d4f6f18798371febfeaacb0e76df40ff85109440e8
5
5
  SHA512:
6
- metadata.gz: da8540ad9f35f3738485ec3f58b28ba14c2a330ae6ae2cd4d1bfefbe46206f0c7c8b842053829dcf4e668d57c03890137f2536c559d805d51ba1c04755daf58c
7
- data.tar.gz: 01a31a8402b496e30298ceda86e2ebcbf06eb09d7453e9a56a681f159335eab03d3436487e4bb138afbe027990a1c4747acf0c3d06756a4d3ae56749144635da
6
+ metadata.gz: 90c413010ca39e84809c85fd7a659900293055d0db111adafcd70f7cba88c24aee6c8953bd6ef066c9861fc6406e6612ea34a318780302a6dc5488ceda29e7f1
7
+ data.tar.gz: 4c977d93716db251acd831231904271d8ec216bc1abc1a7ca1620da75767bada7b4ab737b0917359b975c64172fcaebad8a1ffc305833daf80d00157329c5b97
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## 0.4.4
2
+
3
+ * Fix incompatibility with Appsignal v3 which removed long-deprecated is_ignored_exception? with no alternative
4
+
5
+
6
+ ## 0.4.3
7
+
8
+ * Make sort_by_alphanum sort shorter string first.
9
+
10
+ ## 0.4.2
11
+
12
+ * Make sort_by_alphanum stable for chunks that parse to the same int like 04 and 4.
13
+
1
14
  ## 0.4.1
2
15
 
3
16
  * Add timezone to logging timestamps. Use milliseconds instead of microseconds precision.
data/Gemfile.lock CHANGED
@@ -10,7 +10,7 @@ GIT
10
10
  PATH
11
11
  remote: .
12
12
  specs:
13
- roqua-support (0.4.1)
13
+ roqua-support (0.4.4)
14
14
  active_interaction (>= 3.0, < 5.0)
15
15
  activesupport (>= 5.2, < 6.2)
16
16
  appsignal (>= 2.9, < 3.1)
@@ -33,9 +33,9 @@ GEM
33
33
  erubi (~> 1.4)
34
34
  rails-dom-testing (~> 2.0)
35
35
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
36
- active_interaction (4.0.5)
37
- activemodel (>= 5, < 7)
38
- activesupport (>= 5, < 7)
36
+ active_interaction (4.1.0)
37
+ activemodel (>= 5, < 8)
38
+ activesupport (>= 5, < 8)
39
39
  activemodel (6.0.2.2)
40
40
  activesupport (= 6.0.2.2)
41
41
  activerecord (6.0.2.2)
@@ -51,7 +51,7 @@ GEM
51
51
  bundler
52
52
  rake
53
53
  thor (>= 0.14.0)
54
- appsignal (3.0.13)
54
+ appsignal (3.0.26)
55
55
  rack
56
56
  ast (2.4.2)
57
57
  builder (3.2.4)
@@ -21,29 +21,47 @@ module Enumerable
21
21
 
22
22
  private
23
23
 
24
- def grouped_compare(a, b)
25
- loop {
26
- a_chunk, a = extract_alpha_or_number_group(a)
27
- b_chunk, b = extract_alpha_or_number_group(b)
24
+ ALL_NUM = /\d+/
25
+ ALL_ALPHA = /[A-Za-z]+/
26
+ NON_ALPHANUM = /[^A-Za-z0-9]+/
28
27
 
29
- ret = if a_chunk =~ /\d/ and b_chunk =~ /\d/
28
+ def grouped_compare(a, b)
29
+ a_scanner = StringScanner.new(a)
30
+ b_scanner = StringScanner.new(b)
31
+ # each loop has to do exactly 1 non-nil-scan on both scanners or return a non-zero value.
32
+ loop do
33
+ ret = \
34
+ if a_scanner.eos?
35
+ -1
36
+ elsif b_scanner.eos?
37
+ 1
38
+ elsif (a_chunk = a_scanner.scan(ALL_NUM))
39
+ if (b_chunk = b_scanner.scan(ALL_NUM))
40
+ if a_chunk.to_i != b_chunk.to_i
30
41
  a_chunk.to_i <=> b_chunk.to_i
31
- else
42
+ else # 03 vs 3
32
43
  a_chunk <=> b_chunk
33
44
  end
34
-
35
- return -1 if a_chunk == ''
45
+ elsif b_scanner.scan(ALL_ALPHA)
46
+ -1
47
+ else # NON_ALPHANUM
48
+ 1
49
+ end
50
+ elsif (a_chunk = a_scanner.scan(ALL_ALPHA))
51
+ if (b_chunk = b_scanner.scan(ALL_ALPHA))
52
+ a_chunk <=> b_chunk
53
+ else # ALL_NUM or NON_ALPHANUM
54
+ 1
55
+ end
56
+ else # NON_ALPHANUM
57
+ a_chunk = a_scanner.scan(NON_ALPHANUM)
58
+ if (b_chunk = b_scanner.scan(NON_ALPHANUM))
59
+ a_chunk <=> b_chunk
60
+ else
61
+ -1
62
+ end
63
+ end
36
64
  return ret if ret != 0
37
- }
38
- end
39
-
40
- def extract_alpha_or_number_group(item)
41
- matchdata = /([A-Za-z]+|[\d]+)/.match(item)
42
-
43
- if matchdata.nil?
44
- ["", ""]
45
- else
46
- [matchdata[0], item = item[matchdata.offset(0)[1] .. -1]]
47
65
  end
48
66
  end
49
67
  end
@@ -69,7 +69,7 @@ module Roqua
69
69
  end
70
70
 
71
71
  def notify_appsignal?(exception)
72
- const_defined?(:Appsignal) && Appsignal.active? && !Appsignal.is_ignored_exception?(exception)
72
+ const_defined?(:Appsignal) && Appsignal.active?
73
73
  end
74
74
 
75
75
  def notify_appsignal(exception, labels, namespace)
@@ -1,5 +1,5 @@
1
1
  module Roqua
2
2
  module Support
3
- VERSION = '0.4.1'.freeze
3
+ VERSION = '0.4.4'.freeze
4
4
  end
5
5
  end
@@ -11,8 +11,23 @@ describe Enumerable do
11
11
  expect(input.sort_by_alphanum(&:reverse)).to eq ["004some10thing", "004some11thing", "3another"]
12
12
  end
13
13
 
14
+ it 'sorts shorter strings first' do
15
+ input = %w[a_2_ a_2 a a_1] # curlies are above alpha in utf-8, Ԙ is multi-byte
16
+ expect(input.sort_by_alphanum).to eq %w[a a_1 a_2 a_2_]
17
+ end
18
+
19
+ it 'treats non-alphanum as lower than alpha and num' do
20
+ input = %w[b3a b{c bԘb] # curlies are above alpha in utf-8, Ԙ is multi-byte
21
+ expect(input.sort_by_alphanum).to eq %w[b{c bԘb b3a]
22
+ end
23
+
14
24
  it 'compares number chunks as integers' do
15
25
  expect(%w(004 3).sort_by_alphanum).to eq %w(3 004)
16
26
  end
27
+
28
+ it 'sorts identical integers by asci' do
29
+ input = %w[b4e b0004e b04e b004e]
30
+ expect(input.sort_by_alphanum).to eq %w[b0004e b004e b04e b4e]
31
+ end
17
32
  end
18
33
  end
@@ -96,7 +96,6 @@ describe 'Error reporting' do
96
96
  before do
97
97
  Appsignal.config = Appsignal::Config.new(Dir.pwd, "test")
98
98
  allow(Appsignal).to receive(:active?).and_return(true)
99
- allow(Appsignal).to receive(:is_ignored_exception?).and_return(false)
100
99
  allow(Appsignal).to receive(:agent).and_return(agent)
101
100
  end
102
101
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roqua-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marten Veldthuis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-20 00:00:00.000000000 Z
11
+ date: 2022-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_interaction
@@ -266,7 +266,7 @@ homepage: https://github.com/roqua/roqua-support
266
266
  licenses:
267
267
  - MIT
268
268
  metadata: {}
269
- post_install_message:
269
+ post_install_message:
270
270
  rdoc_options: []
271
271
  require_paths:
272
272
  - lib
@@ -282,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
282
282
  version: '0'
283
283
  requirements: []
284
284
  rubygems_version: 3.1.4
285
- signing_key:
285
+ signing_key:
286
286
  specification_version: 4
287
287
  summary: Helper objects and proxies used by a lot of RoQua applications
288
288
  test_files: