dorian-csv-uniq 0.0.1 → 0.1.1

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/csv-uniq +24 -6
  3. metadata +19 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9e58d4f4ae052d87ab6ac03f96f73af80183a58610a1da5e9ec12537b5c1c821
4
- data.tar.gz: 8be73a93d3e190a4dc8597e6f558ca54e50231312c1d5d08983a08ae2b2a1fc5
3
+ metadata.gz: 840b7e2f1b21b6216b7b4ffbd81fc734e89875451b50a4a413b1c7b648d156a1
4
+ data.tar.gz: b05e8907b44c6851ed2a99a0cf4c72e1f85d16646ca4596d33a801223138805e
5
5
  SHA512:
6
- metadata.gz: 93cd22f1e4d3544aa4f6ad47a2385cabf7bfb2854003665761b9b658a13fe8e8bce95519141b80e09862cad31f726cc350709d2aab60ef6dbb6c6f0c9a750e9d
7
- data.tar.gz: a69abe40a31aa2cf4d2f3d4d640fde75b744772b7221046fef61b1e55041b8be79ace3294e7aaffde0d2269d708821cbe4b6d983081baec6b11966a17d884544
6
+ metadata.gz: fdf422f2c703a41bb5929c7ffa93c9e23a6820a716064be569430c734e0cb75e0275142d6819d5a757e958f9416ddc4a2b9a8b96da133fa320944985f8e49830
7
+ data.tar.gz: 51e1d4fc419c4742caf117e699a5fab950f2381153f84d5126f9ee666072ddadd34d347744786cc8273a0174bd7d29039af71f9bb326ae17d81ccc7617b83341
data/bin/csv-uniq CHANGED
@@ -1,12 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- if ARGV.size != 1 || ARGV[0] == "--help" || ARGV[0] == "-h"
5
- puts "USAGE: ... | each CODE"
4
+ require "csv"
5
+
6
+ if ARGV.size < 1 || ARGV[0] == "--help" || ARGV[0] == "-h"
7
+ puts "USAGE: ... | csv-uniq [KEY...] [-h|--headers]"
6
8
  exit
7
9
  end
8
10
 
9
- $stdin.each_line do |it|
10
- it.strip!
11
- eval(ARGV.first)
12
- end
11
+ HEADERS = ARGV.detect { |argv| argv == "-h" || argv == "--headers" }
12
+ KEYS = (ARGV - [HEADERS]).map { |key| HEADERS ? key : key.to_i }
13
+
14
+ puts(
15
+ CSV
16
+ .generate do |output|
17
+ input =
18
+ CSV.parse(
19
+ $stdin.each_line.to_a.map(&:strip).join("\n"),
20
+ headers: !!HEADERS
21
+ )
22
+
23
+ output << input.headers if HEADERS
24
+
25
+ input
26
+ .uniq { |row| KEYS.map { |key| row[key] } }
27
+ .each { |row| output << row }
28
+ end
29
+ .strip
30
+ )
metadata CHANGED
@@ -1,19 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorian-csv-uniq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-17 00:00:00.000000000 Z
12
- dependencies: []
13
- description: |-
14
- Evaluates some code on csv-uniq line of the input
15
-
16
- e.g. `ls -l | csv-uniq "puts it.split.first"`
11
+ date: 2024-08-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: csv
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: returns a csv by unique keys, can be index or name
17
28
  email: dorian@dorianmarie.com
18
29
  executables:
19
30
  - csv-uniq
@@ -44,5 +55,5 @@ requirements: []
44
55
  rubygems_version: 3.5.11
45
56
  signing_key:
46
57
  specification_version: 4
47
- summary: Evaluates some code on csv-uniq line of the input
58
+ summary: returns a csv by unique keys, can be index or name
48
59
  test_files: []