csv2md 1.0.0 → 1.1.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/csv2md +32 -8
  3. data/lib/csv2md.rb +21 -16
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c06bf832ededec86758bdf9c46e3c5e5bbea7eac
4
- data.tar.gz: 392e8ff31982b5d863025bde69af362408c203bf
3
+ metadata.gz: 2392ebefc87000ec2a257814ae51c08404eb4f30
4
+ data.tar.gz: e3cd2a26218051fd717fa17451349e150d5a8a58
5
5
  SHA512:
6
- metadata.gz: 0208242e0c86cb0d6fb2233ed80eda087c610c5367f1bb87aad43989f6c4720ab7fcad20976dcf7d1b0f36dbea7216b31b7a3e7d6517c96e06e154cf114e7206
7
- data.tar.gz: 544b643ece9d20abb53f5a18f99b4022a8217331da2ecdf34866e28acf2033aacd8dffd20fa17bc230e705222bac68bd450d0aff80ae0c773b353e62dd532677
6
+ metadata.gz: cb23bf84be8586b16e53289afa936b4d8cef6f2f17c0b60ffb15d1909dec7d722a9827985799ea869969f3f842e4699e497078b4263bd890638340b4b59b6491
7
+ data.tar.gz: 28314b11c988710c6aa9af6f20394d2bd82b4c2132ced514dd0e5ee0e633b3c0b23b826c1a49b426a7cf5aac8b1d3b5c39cce72b5d1743bab784b5cf306939b1
data/bin/csv2md CHANGED
@@ -2,17 +2,41 @@
2
2
 
3
3
  require "csv2md"
4
4
 
5
- csv = (STDIN.tty?) ? nil : $stdin.read
5
+ input = (STDIN.tty?) ? nil : $stdin.read
6
6
  gfm = ""
7
7
 
8
- if csv
9
- gfm = Csv2md.convert_csv_to_gfm(csv)
10
- else
11
- while file_path = ARGV.shift
12
- csv = File.read(file_path)
13
- gfm += Csv2md.convert_csv_to_gfm(csv)
14
- gfm += "\n" if ARGV.length > 0
8
+ if !input && ARGV.length == 0
9
+ message = "Usage: csv2md [options] results.csv\n"
10
+ message += " cat results.csv | csv2md [options]\n\n"
11
+ message += "Options:\n"
12
+ message += " -r Reverses conversation, takes a GitHub Flavored\n"
13
+ message += " Markdown table as input and outputs csv."
14
+ puts message
15
+ exit
16
+ end
17
+
18
+ begin
19
+ output_format = if ARGV[0] == "-r"
20
+ ARGV.shift
21
+ :csv
22
+ else
23
+ :gfm
24
+ end
25
+
26
+ if input
27
+ csv2md = Csv2md.new(input: input)
28
+ gfm = csv2md.send(output_format)
29
+ else
30
+ while file_path = ARGV.shift
31
+ input = File.read(file_path)
32
+ csv2md = Csv2md.new(input: input)
33
+ gfm += csv2md.send(output_format)
34
+ gfm += "\n" if ARGV.length > 0
35
+ end
15
36
  end
37
+ rescue Csv2md::UnableToParseCsv
38
+ puts "Unable to parse csv"
39
+ exit
16
40
  end
17
41
 
18
42
  puts gfm
data/lib/csv2md.rb CHANGED
@@ -1,21 +1,13 @@
1
1
  require "csv"
2
2
 
3
3
  class Csv2md
4
+ class UnableToParseCsv < StandardError; end
4
5
 
5
- # Public: Public interface to Csv2md converter.
6
- #
7
- # csv - String csv formatted data.
8
- #
9
- # Returns a String.
10
- def self.convert_csv_to_gfm(csv)
11
- new(csv: csv).gfm
6
+ def initialize(input: nil)
7
+ @input = input
12
8
  end
13
9
 
14
- def initialize(csv:)
15
- @csv = csv
16
- end
17
-
18
- attr_reader :csv
10
+ attr_reader :input
19
11
 
20
12
  def find_column_widths
21
13
  parsed_csv.inject(Array.new(parsed_csv[0].length, 0)) do |result, line|
@@ -27,10 +19,8 @@ class Csv2md
27
19
 
28
20
  result
29
21
  end
30
- end
31
-
32
- def parsed_csv
33
- @parsed_csv ||= CSV.parse(csv)
22
+ rescue
23
+ raise UnableToParseCsv
34
24
  end
35
25
 
36
26
  def gfm
@@ -57,4 +47,19 @@ class Csv2md
57
47
 
58
48
  result
59
49
  end
50
+
51
+ def csv
52
+ result = input.split("\n").map do |line|
53
+ row = line.scan(/\|([^\|]+)\s/).flatten.map(&:strip).join(",")
54
+ row unless row.strip == ""
55
+ end.compact.join("\n")
56
+ result += "\n"
57
+ result
58
+ end
59
+
60
+ private
61
+
62
+ def parsed_csv
63
+ @parsed_csv ||= CSV.parse(input)
64
+ end
60
65
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv2md
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Hoyt