csv2md 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/csv2md +18 -0
  3. data/lib/csv2md.rb +60 -0
  4. metadata +74 -0
@@ -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
@@ -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
@@ -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: []