philiprehberger-csv_builder 0.9.0 → 0.10.0
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 +5 -0
- data/README.md +2 -0
- data/lib/philiprehberger/csv_builder/builder.rb +9 -0
- data/lib/philiprehberger/csv_builder/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: 2f1c54dd0a22f73f8b3c1aba25cd72060d79c2fc9bd71ffc409d708aa927d826
|
|
4
|
+
data.tar.gz: d4484b178feb602eea6c387e0dfcbbe352cbe303886374115bf52cd44f1b97c1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 38aa26541ad6d2f535f5b64d1cd27d10b01818efd0712456dbe92a44bef40ac46654a678d4aa6c957d84df4f1e93327dd3f91ce8ee8e2bd9aa1bb686cc7ba984
|
|
7
|
+
data.tar.gz: 7b057a2ef52c4919f9e79ca82d0575514ff791aec1b26a0d3d564ecd64f272531d627df773822e1c47a282f10a1440c4fd6c2ef2ca19f6fd77b415995c54516a
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.10.0] - 2026-04-30
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- `Builder#empty?` — `true` when zero data rows would be emitted; respects filters, sort, offset, and limit. Saves callers from generating CSV just to check emptiness.
|
|
14
|
+
|
|
10
15
|
## [0.9.0] - 2026-04-15
|
|
11
16
|
|
|
12
17
|
### Added
|
data/README.md
CHANGED
|
@@ -306,6 +306,7 @@ builder = Philiprehberger::CsvBuilder.build(records) do
|
|
|
306
306
|
end
|
|
307
307
|
|
|
308
308
|
builder.row_count # => 50
|
|
309
|
+
builder.empty? # => false (true when no data rows would be emitted)
|
|
309
310
|
```
|
|
310
311
|
|
|
311
312
|
### Streaming
|
|
@@ -447,6 +448,7 @@ builder.headers # => ["name", "email"]
|
|
|
447
448
|
| `Builder#headers` | Return column header names |
|
|
448
449
|
| `Builder#column_stats` | Per-column statistics: count, unique, nil_count, and sample values |
|
|
449
450
|
| `Builder#row_count` | Number of data rows after filters, sorts, offsets, and limits |
|
|
451
|
+
| `Builder#empty?` | `true` when zero data rows would be emitted (after filters/limits/offset) |
|
|
450
452
|
|
|
451
453
|
## Development
|
|
452
454
|
|
|
@@ -174,6 +174,15 @@ module Philiprehberger
|
|
|
174
174
|
filtered_records.size
|
|
175
175
|
end
|
|
176
176
|
|
|
177
|
+
# Whether the builder will emit zero data rows after applying filters,
|
|
178
|
+
# sort, offset, and limit. Headers and footer are excluded from the
|
|
179
|
+
# check — `#empty?` reports on the data body only.
|
|
180
|
+
#
|
|
181
|
+
# @return [Boolean]
|
|
182
|
+
def empty?
|
|
183
|
+
row_count.zero?
|
|
184
|
+
end
|
|
185
|
+
|
|
177
186
|
# Per-column statistics across filtered records.
|
|
178
187
|
#
|
|
179
188
|
# @return [Hash{Symbol => Hash}] column name mapped to stats hash
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: philiprehberger-csv_builder
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Philip Rehberger
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-04-
|
|
11
|
+
date: 2026-04-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: Build CSV files from record collections using a declarative DSL with
|
|
14
14
|
column definitions, custom transforms, filtering, sorting, pagination via limit/offset,
|