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.
- checksums.yaml +4 -4
- data/bin/csv2md +32 -8
- data/lib/csv2md.rb +21 -16
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2392ebefc87000ec2a257814ae51c08404eb4f30
|
4
|
+
data.tar.gz: e3cd2a26218051fd717fa17451349e150d5a8a58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
5
|
+
input = (STDIN.tty?) ? nil : $stdin.read
|
6
6
|
gfm = ""
|
7
7
|
|
8
|
-
if
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|