lang
1require 'csv'
2require 'pp'
3
4csv = File.read(File.expand_path('./csv.csv'))
5pp table = CSV.parse(csv)
6# [["TitleA", "TitleB", "TitleC"],
7# ["Data1", "Data2", "Data3"],
8# ["Data4", nil, "Data6"],
9# ["Data7", "Data5", "Data8"]]
10
11table.map do |line|
12 line.map! { |data| padding = 20; data.nil? ? 'x'.rjust(padding, '#') : data.rjust(padding, '#') }
13end
14
15pp table
16# [["##############TitleA", "##############TitleB", "##############TitleC"],
17# ["###############Data1", "###############Data2", "###############Data3"],
18# ["###############Data4", "###################x", "###############Data6"],
19# ["###############Data7", "###############Data5", "###############Data8"]]
このような書き方でいかがでしょうか
(例示として、ファイルを開いてブロックを渡して処理するパターンのコードをよく見かけますが、もちろん、必ずそうしなければならないということはありません、自由に書けます)
詳細はドキュメントを参照してみてください
何か参考になれば幸いです
Links