csv2md 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/csv2md +18 -0
- data/lib/csv2md.rb +60 -0
- metadata +74 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c06bf832ededec86758bdf9c46e3c5e5bbea7eac
|
4
|
+
data.tar.gz: 392e8ff31982b5d863025bde69af362408c203bf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0208242e0c86cb0d6fb2233ed80eda087c610c5367f1bb87aad43989f6c4720ab7fcad20976dcf7d1b0f36dbea7216b31b7a3e7d6517c96e06e154cf114e7206
|
7
|
+
data.tar.gz: 544b643ece9d20abb53f5a18f99b4022a8217331da2ecdf34866e28acf2033aacd8dffd20fa17bc230e705222bac68bd450d0aff80ae0c773b353e62dd532677
|
data/bin/csv2md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "csv2md"
|
4
|
+
|
5
|
+
csv = (STDIN.tty?) ? nil : $stdin.read
|
6
|
+
gfm = ""
|
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
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
puts gfm
|
data/lib/csv2md.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require "csv"
|
2
|
+
|
3
|
+
class Csv2md
|
4
|
+
|
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
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(csv:)
|
15
|
+
@csv = csv
|
16
|
+
end
|
17
|
+
|
18
|
+
attr_reader :csv
|
19
|
+
|
20
|
+
def find_column_widths
|
21
|
+
parsed_csv.inject(Array.new(parsed_csv[0].length, 0)) do |result, line|
|
22
|
+
line.each_with_index do |column, i|
|
23
|
+
if column.length > result[i]
|
24
|
+
result[i] = column.length
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
result
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def parsed_csv
|
33
|
+
@parsed_csv ||= CSV.parse(csv)
|
34
|
+
end
|
35
|
+
|
36
|
+
def gfm
|
37
|
+
result = ""
|
38
|
+
widths = find_column_widths
|
39
|
+
number_of_columns = widths.length
|
40
|
+
total_width = widths.inject(0) {|sum, n| sum += n } + widths.length * 2
|
41
|
+
|
42
|
+
parsed_csv.each_with_index do |line, row_index|
|
43
|
+
line.each_with_index do |column, column_index|
|
44
|
+
result += "| "
|
45
|
+
result += column.ljust(widths[column_index] + 1, " ")
|
46
|
+
if column_index == number_of_columns - 1
|
47
|
+
result += "|\n"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
if row_index == 0
|
51
|
+
widths.each do |width|
|
52
|
+
result += "|".ljust(width + 3, "-")
|
53
|
+
end
|
54
|
+
result += "|\n"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
result
|
59
|
+
end
|
60
|
+
end
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: csv2md
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jonathan Hoyt
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-04-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '10.4'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '10.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.6'
|
41
|
+
description: Convert csv into a GitHub Flavored Markdown table
|
42
|
+
email: jonmagic@gmail.com
|
43
|
+
executables:
|
44
|
+
- csv2md
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- bin/csv2md
|
49
|
+
- lib/csv2md.rb
|
50
|
+
homepage: https://github.com/jonmagic/csv2md
|
51
|
+
licenses:
|
52
|
+
- MIT
|
53
|
+
metadata: {}
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
requirements: []
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 2.2.2
|
71
|
+
signing_key:
|
72
|
+
specification_version: 4
|
73
|
+
summary: Convert csv into a GitHub Flavored Markdown table
|
74
|
+
test_files: []
|