heavy_keeper 0.1.5 → 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 +4 -4
- data/.rspec +2 -1
- data/CHANGELOG.md +5 -0
- data/Gemfile.redis.4 +1 -1
- data/lib/heavy_keeper/top_k.rb +2 -2
- data/lib/heavy_keeper/validations/message.rb +37 -0
- data/lib/heavy_keeper/version.rb +1 -1
- metadata +4 -9
- data/lib/validations/message.rb +0 -35
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c1058a07232d18bd71b757bf4c36b6cda0d3ce82148ad2d62f2616dbf5751232
|
|
4
|
+
data.tar.gz: 467dab0871cde82994a8ddc8ad120bca695e298258979af512f340bb15719be2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f4f71ee0724e8a4dc643b06f98829a07954f73bf2a32ca4e09b4a59c3ac3d406ecb9e1c77ac49cccbcbbeb272fc50a2d6724ad2f81480cd450f7fd3e8f113356
|
|
7
|
+
data.tar.gz: 2791893982e667b33077a2313edd2bdbd8009a27a897b5a603bc1ed9bc70c8a99f516956b6295570e572aafb3203f658307c73dbfaba9c178e60d287edc1e895
|
data/.rspec
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.redis.4
CHANGED
data/lib/heavy_keeper/top_k.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
require 'dry-schema'
|
|
4
4
|
require 'securerandom'
|
|
5
5
|
require 'xxhash'
|
|
6
|
-
require_relative '
|
|
6
|
+
require_relative 'validations/message'
|
|
7
7
|
|
|
8
8
|
module HeavyKeeper
|
|
9
9
|
class TopK # rubocop:disable Metrics/ClassLength
|
|
@@ -217,7 +217,7 @@ module HeavyKeeper
|
|
|
217
217
|
result = Validator.call(options)
|
|
218
218
|
|
|
219
219
|
if result.failure?
|
|
220
|
-
error =
|
|
220
|
+
error = Validations::Message.new.build(result.errors.to_h).join('. ')
|
|
221
221
|
raise HeavyKeeper::Error, error
|
|
222
222
|
end
|
|
223
223
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module HeavyKeeper
|
|
2
|
+
module Validations
|
|
3
|
+
class Message
|
|
4
|
+
CLASSIFY_SEPARATOR = '_'.freeze
|
|
5
|
+
TITLEIZE_SEPARATOR = ' '.freeze
|
|
6
|
+
|
|
7
|
+
# @errors [Hash | Array] output of dry-validation
|
|
8
|
+
# after validating params
|
|
9
|
+
# @parent [Nil | String] key name of a field that has `errors`
|
|
10
|
+
# after validating params
|
|
11
|
+
# Output: array of string that can be used to feed into
|
|
12
|
+
# Errors::InvalidParamsError
|
|
13
|
+
def build(errors, parent = nil)
|
|
14
|
+
case errors
|
|
15
|
+
when Hash
|
|
16
|
+
errors.flat_map do |key, value|
|
|
17
|
+
child = [parent, key].compact.join(' ')
|
|
18
|
+
build(value, child)
|
|
19
|
+
end
|
|
20
|
+
when Array
|
|
21
|
+
errors.flat_map do |error|
|
|
22
|
+
"#{titleize(parent.to_s)} #{build(error)}"
|
|
23
|
+
end
|
|
24
|
+
else
|
|
25
|
+
errors
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def titleize(string)
|
|
32
|
+
# NOTE: this is not a robust implementation of titleize
|
|
33
|
+
string.split(CLASSIFY_SEPARATOR).map(&:capitalize).join(TITLEIZE_SEPARATOR)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
data/lib/heavy_keeper/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: heavy_keeper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hieu Nguyen
|
|
8
8
|
- Kenneth Teh
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: exe
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2025-02-04 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: dry-configurable
|
|
@@ -67,8 +66,6 @@ dependencies:
|
|
|
67
66
|
- - ">="
|
|
68
67
|
- !ruby/object:Gem::Version
|
|
69
68
|
version: '0'
|
|
70
|
-
description:
|
|
71
|
-
email:
|
|
72
69
|
executables: []
|
|
73
70
|
extensions: []
|
|
74
71
|
extra_rdoc_files: []
|
|
@@ -87,8 +84,8 @@ files:
|
|
|
87
84
|
- lib/heavy_keeper/bucket.rb
|
|
88
85
|
- lib/heavy_keeper/min_heap.rb
|
|
89
86
|
- lib/heavy_keeper/top_k.rb
|
|
87
|
+
- lib/heavy_keeper/validations/message.rb
|
|
90
88
|
- lib/heavy_keeper/version.rb
|
|
91
|
-
- lib/validations/message.rb
|
|
92
89
|
homepage: https://github.com/Kaligo/heavy_keeper
|
|
93
90
|
licenses: []
|
|
94
91
|
metadata:
|
|
@@ -96,7 +93,6 @@ metadata:
|
|
|
96
93
|
source_code_uri: https://github.com/Kaligo/heavy_keeper
|
|
97
94
|
changelog_uri: https://github.com/Kaligo/heavy_keeper/blob/master/CHANGELOG.md
|
|
98
95
|
rubygems_mfa_required: 'true'
|
|
99
|
-
post_install_message:
|
|
100
96
|
rdoc_options: []
|
|
101
97
|
require_paths:
|
|
102
98
|
- lib
|
|
@@ -111,8 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
111
107
|
- !ruby/object:Gem::Version
|
|
112
108
|
version: '0'
|
|
113
109
|
requirements: []
|
|
114
|
-
rubygems_version: 3.
|
|
115
|
-
signing_key:
|
|
110
|
+
rubygems_version: 3.6.2
|
|
116
111
|
specification_version: 4
|
|
117
112
|
summary: Gem which implements HeavyKeeper algorithm
|
|
118
113
|
test_files: []
|
data/lib/validations/message.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
module Validations
|
|
2
|
-
class Message
|
|
3
|
-
CLASSIFY_SEPARATOR = '_'.freeze
|
|
4
|
-
TITLEIZE_SEPARATOR = ' '.freeze
|
|
5
|
-
|
|
6
|
-
# @errors [Hash | Array] output of dry-validation
|
|
7
|
-
# after validating params
|
|
8
|
-
# @parent [Nil | String] key name of a field that has `errors`
|
|
9
|
-
# after validating params
|
|
10
|
-
# Output: array of string that can be used to feed into
|
|
11
|
-
# Errors::InvalidParamsError
|
|
12
|
-
def build(errors, parent = nil)
|
|
13
|
-
case errors
|
|
14
|
-
when Hash
|
|
15
|
-
errors.flat_map do |key, value|
|
|
16
|
-
child = [parent, key].compact.join(' ')
|
|
17
|
-
build(value, child)
|
|
18
|
-
end
|
|
19
|
-
when Array
|
|
20
|
-
errors.flat_map do |error|
|
|
21
|
-
"#{titleize(parent.to_s)} #{build(error)}"
|
|
22
|
-
end
|
|
23
|
-
else
|
|
24
|
-
errors
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
def titleize(string)
|
|
31
|
-
# NOTE: this is not a robust implementation of titleize
|
|
32
|
-
string.split(CLASSIFY_SEPARATOR).map(&:capitalize).join(TITLEIZE_SEPARATOR)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|