whoop 1.0.3 → 1.0.4
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/Gemfile.lock +1 -1
- data/lib/whoop/formatters/sql_formatter.rb +40 -1
- data/lib/whoop/version.rb +1 -1
- data/lib/whoop.rb +9 -0
- data/sig/whoop.rbs +8 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9b6642d169f36ac114748f02515b804646a7981f244475c41fa053456d93c08
|
4
|
+
data.tar.gz: ca2a36f9da6922d998189ea808bd3976684e3cf2919fb7c4ed9672408591fce7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eee07b43704595c415ec3eb4e36cf5ea2b9215982d22f7f5f1d0e7e9565c408dbaa4e41f43385c79c8089f1740907c2c21d8a2bcd9b5d74f64f103433774446a
|
7
|
+
data.tar.gz: 4865c548afe2113e7218ebde457eea291f9152c3bcecae84d684581e4ad9c397b6af965668623d4f581a571062881759d5681a6475cb570f04d9571f224b8eed
|
data/Gemfile.lock
CHANGED
@@ -6,6 +6,33 @@ require "active_record"
|
|
6
6
|
module Whoop
|
7
7
|
module Formatters
|
8
8
|
module SqlFormatter
|
9
|
+
# Hash of patterns to preserve in the SQL. The key is the expected pattern,
|
10
|
+
# the value is the pattern after it has been "broken" by anbt formatting.
|
11
|
+
# Instances of the value are replaced by the key.
|
12
|
+
# Patterns are jsonb column operators from https://www.postgresql.org/docs/15/functions-json.html
|
13
|
+
PATTERNS_TO_PRESERVE = {
|
14
|
+
# jsonb operators without surrounding spaces
|
15
|
+
# IE, the first one replaces " : : " with "::"
|
16
|
+
"::" => /\s?: :\s?/,
|
17
|
+
"->>" => /\s?- > >\s?/,
|
18
|
+
"->" => /\s?- >\s?/,
|
19
|
+
"#>>" => /\s?# > >\s?/,
|
20
|
+
"#>" => /\s?# >\s?/,
|
21
|
+
|
22
|
+
# jsonb operators with surrounding spaces
|
23
|
+
# IE, the first one replaces " @ > " with " @> "
|
24
|
+
" @> " => /\s?@ >\s?/,
|
25
|
+
" <@ " => /\s?< @\s?/,
|
26
|
+
" ?| " => /\s?\? \|\s?/,
|
27
|
+
" ?& " => /\s?\? &\s?/,
|
28
|
+
" || " => /\s?\| \|\s?/,
|
29
|
+
" #- " => /\s?# -\s?/,
|
30
|
+
|
31
|
+
# Additional broken patterns
|
32
|
+
"[" => /\[\s?/,
|
33
|
+
"]" => /\s?\]/
|
34
|
+
}
|
35
|
+
|
9
36
|
# Format the SQL query
|
10
37
|
# @param [String] sql The SQL query
|
11
38
|
# @param [Boolean] colorize - colorize the SQL query (default: false)
|
@@ -39,8 +66,20 @@ module Whoop
|
|
39
66
|
def self.generate_pretty_sql(sql)
|
40
67
|
rule = AnbtSql::Rule.new
|
41
68
|
rule.indent_string = " "
|
69
|
+
|
42
70
|
formatter = AnbtSql::Formatter.new(rule)
|
43
|
-
formatter.format(sql.dup)
|
71
|
+
formatted_string = formatter.format(sql.dup)
|
72
|
+
|
73
|
+
# Anbt injects additional spaces into joined symbols.
|
74
|
+
# This removes them by generating the "broken" collection
|
75
|
+
# of symbols, and replacing them with the original.
|
76
|
+
PATTERNS_TO_PRESERVE.each do |correct_pattern, incorrect_pattern|
|
77
|
+
next unless incorrect_pattern.match?(formatted_string)
|
78
|
+
|
79
|
+
formatted_string.gsub!(incorrect_pattern, correct_pattern)
|
80
|
+
end
|
81
|
+
|
82
|
+
formatted_string
|
44
83
|
end
|
45
84
|
|
46
85
|
# Execute the `EXPLAIN` query
|
data/lib/whoop/version.rb
CHANGED
data/lib/whoop.rb
CHANGED
@@ -87,6 +87,7 @@ module Whoop
|
|
87
87
|
logger_method.call ""
|
88
88
|
logger_method.call formatter_method.call(result)
|
89
89
|
logger_method.call ""
|
90
|
+
display_invalid_format_message(format, color_method, logger_method)
|
90
91
|
logger_method.call color_method.call "#{BOTTOM_LINE_CHAR}#{line}\n\n"
|
91
92
|
end
|
92
93
|
else
|
@@ -98,6 +99,7 @@ module Whoop
|
|
98
99
|
logger_method.call ""
|
99
100
|
logger_method.call formatter_method.call(label)
|
100
101
|
logger_method.call ""
|
102
|
+
display_invalid_format_message(format, color_method, logger_method)
|
101
103
|
logger_method.call color_method.call "#{BOTTOM_LINE_CHAR}#{line}\n\n"
|
102
104
|
end
|
103
105
|
end
|
@@ -150,6 +152,13 @@ module Whoop
|
|
150
152
|
end
|
151
153
|
end
|
152
154
|
|
155
|
+
def display_invalid_format_message(format, color_method, logger_method)
|
156
|
+
return if FORMATS.include?(format)
|
157
|
+
|
158
|
+
invalid_format_line = [color_method.call(INDENT), "note:".colorize(:blue).underline, "Unsupported format used. Available formats: #{FORMATS.to_sentence}"].join(" ")
|
159
|
+
logger_method.call invalid_format_line
|
160
|
+
end
|
161
|
+
|
153
162
|
# Return the line with the label centered in it
|
154
163
|
# @param [String] label
|
155
164
|
# @param [Integer] count
|
data/sig/whoop.rbs
CHANGED
@@ -73,6 +73,12 @@ module Whoop
|
|
73
73
|
# _@return_ — format method
|
74
74
|
def detect_formatter_method: (Symbol format, ?colorize: untyped, ?explain: untyped) -> Method
|
75
75
|
|
76
|
+
# sord omit - no YARD type given for "format", using untyped
|
77
|
+
# sord omit - no YARD type given for "color_method", using untyped
|
78
|
+
# sord omit - no YARD type given for "logger_method", using untyped
|
79
|
+
# sord omit - no YARD return type given, using untyped
|
80
|
+
def display_invalid_format_message: (untyped format, untyped color_method, untyped logger_method) -> untyped
|
81
|
+
|
76
82
|
# Return the line with the label centered in it
|
77
83
|
#
|
78
84
|
# _@param_ `label`
|
@@ -85,6 +91,8 @@ module Whoop
|
|
85
91
|
|
86
92
|
module Formatters
|
87
93
|
module SqlFormatter
|
94
|
+
PATTERNS_TO_PRESERVE: untyped
|
95
|
+
|
88
96
|
# Format the SQL query
|
89
97
|
#
|
90
98
|
# _@param_ `sql` — The SQL query
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whoop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Berry
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -235,7 +235,7 @@ metadata:
|
|
235
235
|
homepage_uri: https://github.com/coderberry/whoop
|
236
236
|
source_code_uri: https://github.com/coderberry/whoop
|
237
237
|
changelog_uri: https://github.com/coderberry/whoop
|
238
|
-
post_install_message:
|
238
|
+
post_install_message:
|
239
239
|
rdoc_options: []
|
240
240
|
require_paths:
|
241
241
|
- lib
|
@@ -250,8 +250,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
250
250
|
- !ruby/object:Gem::Version
|
251
251
|
version: '0'
|
252
252
|
requirements: []
|
253
|
-
rubygems_version: 3.
|
254
|
-
signing_key:
|
253
|
+
rubygems_version: 3.4.6
|
254
|
+
signing_key:
|
255
255
|
specification_version: 4
|
256
256
|
summary: A simple gem to help you whoop your logs into shape.
|
257
257
|
test_files: []
|