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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a4ffc869b5a686e7e0d33b193f309354328b4ea6aa12bd5421ff1d906aa8cce
4
- data.tar.gz: 74f124f09a30ff6fd71f7caaaf13364c2bf63032adf8bf03b5d61dc1cf328caa
3
+ metadata.gz: 2f1c54dd0a22f73f8b3c1aba25cd72060d79c2fc9bd71ffc409d708aa927d826
4
+ data.tar.gz: d4484b178feb602eea6c387e0dfcbbe352cbe303886374115bf52cd44f1b97c1
5
5
  SHA512:
6
- metadata.gz: fa82a727dacd0a8047b60a431045eeb40a99331346d96e5e2f9025137fbf83bce1ccbfb92e5bd502331943311e2543d6e7eb68d527ee61a9cc7bb79e9dbe8e36
7
- data.tar.gz: 753166a7741b788a23133861c93d09441b7c8852b62bf1753d3b87565250aa017e38741c321a0388524d78885fa66a734ca112c63c27d8aba4c8c55b103ec37e
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Philiprehberger
4
4
  module CsvBuilder
5
- VERSION = '0.9.0'
5
+ VERSION = '0.10.0'
6
6
  end
7
7
  end
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.9.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-16 00:00:00.000000000 Z
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,