taql 0.2.2 → 0.2.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/CHANGELOG.md +10 -0
- data/lib/taql/table.rb +42 -54
- data/lib/taql/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f24bc719d96fb2e39e7c563bff21d9faa0b571570fcc1c76014636f4e7ebd05a
|
4
|
+
data.tar.gz: 62abbf13a4fef7e0ab96324833e4a8f505c0e27103e95ddabcdcc3f23f3c2ee8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b36295a5bcb1d37eb1c2c129447d13776ae6119b02bdefe22619da59176835e7dcfae8381abda207bffbf239da871c5790662b32085fb7135f5b913458d80ada
|
7
|
+
data.tar.gz: dd9a2b409e6f9bd4fbf8fa974dee215da841828f6c3fe4dccfe6ec9df04232e9efe3344b670b4c6fb3732d63929d614eba67d34cef8235833d1943f45f7087f5
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## [0.2.4] - 2025-04-17
|
6
|
+
|
7
|
+
- Add back missing alias
|
8
|
+
- Add back support for older rubies
|
9
|
+
- Map with index
|
10
|
+
|
11
|
+
## [0.2.3] - 2025-04-17
|
12
|
+
|
13
|
+
- Refactor table code
|
14
|
+
|
5
15
|
## [0.2.2] - 2025-04-08
|
6
16
|
|
7
17
|
- Fixed a bug displaying empty tables
|
data/lib/taql/table.rb
CHANGED
@@ -1,82 +1,70 @@
|
|
1
1
|
module Taql
|
2
2
|
class Table
|
3
|
-
|
3
|
+
DASH = "-".freeze
|
4
|
+
PLUS = "+".freeze
|
5
|
+
SPACE = " ".freeze
|
6
|
+
VERTICAL_BAR = "|".freeze
|
4
7
|
|
5
8
|
def initialize(entries)
|
6
|
-
@entries = entries
|
7
|
-
end
|
8
|
-
|
9
|
-
def print
|
10
|
-
<<~OUTPUT
|
11
|
-
#{separator}
|
12
|
-
#{formatted_headers}
|
13
|
-
#{separator}
|
14
|
-
#{formatted_entries.join("\n")}
|
15
|
-
#{separator}
|
16
|
-
OUTPUT
|
9
|
+
@entries = entries.map { |entry| entry.transform_values(&:to_s) }
|
17
10
|
end
|
18
11
|
|
19
|
-
def
|
20
|
-
|
12
|
+
def body
|
13
|
+
entries.map(&:values)
|
21
14
|
end
|
22
15
|
|
23
|
-
def
|
24
|
-
|
25
|
-
|
26
|
-
.map { |key, value| value.to_s.ljust(rows_max_length[key]) }
|
27
|
-
.join(" | ")
|
28
|
-
|
29
|
-
result << "| #{individual_entry} |"
|
16
|
+
def columns
|
17
|
+
headers.map do |header|
|
18
|
+
[header, *entries.map { |entry| entry[header] }]
|
30
19
|
end
|
31
20
|
end
|
32
21
|
|
33
|
-
def
|
34
|
-
|
35
|
-
header.upcase.ljust(rows_max_length[header])
|
36
|
-
end.join(" | ")
|
37
|
-
|
38
|
-
"| #{output} |"
|
22
|
+
def headers
|
23
|
+
entries.map(&:keys).uniq.flatten
|
39
24
|
end
|
40
25
|
|
41
|
-
def
|
42
|
-
|
26
|
+
def print
|
27
|
+
output if entries.any?
|
43
28
|
end
|
44
29
|
|
45
30
|
def rows
|
46
|
-
|
47
|
-
Hash.new { |hash, key| hash[key] = [] }
|
48
|
-
) do |entry, result|
|
49
|
-
entry.each do |header, value|
|
50
|
-
result[header] << value
|
51
|
-
end
|
52
|
-
end
|
31
|
+
[headers, *body]
|
53
32
|
end
|
54
33
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
34
|
+
private
|
35
|
+
|
36
|
+
attr_reader :entries
|
37
|
+
|
38
|
+
def column_widths
|
39
|
+
columns.map { |column| column.map(&:length).max }
|
59
40
|
end
|
60
41
|
|
61
|
-
def
|
62
|
-
|
63
|
-
|
42
|
+
def formatted(segments)
|
43
|
+
segments.map.with_index do |segment, index|
|
44
|
+
[SPACE, segment.ljust(column_widths[index]), SPACE].join
|
45
|
+
end.then do |segments|
|
46
|
+
[VERTICAL_BAR, segments.join(VERTICAL_BAR), VERTICAL_BAR].join
|
64
47
|
end
|
65
48
|
end
|
66
49
|
|
67
|
-
def
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
50
|
+
def output
|
51
|
+
<<~OUTPUT
|
52
|
+
#{separator}
|
53
|
+
#{formatted(headers.map(&:upcase))}
|
54
|
+
#{separator}
|
55
|
+
#{body.map(&method(:formatted)).join("\n")}
|
56
|
+
#{separator}
|
57
|
+
OUTPUT
|
74
58
|
end
|
75
59
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
60
|
+
def separator
|
61
|
+
columns.map.with_index do |column, index|
|
62
|
+
Array.new(column_widths[index] + 2, DASH).join
|
63
|
+
end.then do |columns|
|
64
|
+
[PLUS, columns.join(PLUS), PLUS].join
|
65
|
+
end
|
80
66
|
end
|
67
|
+
|
68
|
+
alias_method :to_s, :print
|
81
69
|
end
|
82
70
|
end
|
data/lib/taql/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ariel Rzezak
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-04-
|
10
|
+
date: 2025-04-17 00:00:00.000000000 Z
|
11
11
|
dependencies: []
|
12
12
|
description: Taql allows you to pretty print SQL table queries in Rails.
|
13
13
|
email:
|