Class: CSVDataReader::Generator

Inherits:
Jekyll::Generator
  • Object
show all
Defined in:
lib/read_cvs.rb

Instance Method Summary collapse

Instance Method Details

#generate(site) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/read_cvs.rb', line 65

def generate(site)
  #dir = config['csv_data_source'] || '_csv'
  dir = "_csv"
  base = File.join(site.source, dir)
  return unless File.directory?(base) && (!site.safe || !File.symlink?(base))

  entries = Dir.chdir(base) { Dir['*.csv'] }
  entries.delete_if { |e| File.directory?(File.join(base, e)) }

  entries.each do |entry|
    path = File.join(site.source, dir, entry)
    next if File.symlink?(path) && site.safe

    key = sanitize_filename(File.basename(entry, '.*'))
    file_data = CSV.read(path, :headers => true)

    data = Hash.new        
    data['content'] = file_data.to_a[1..-1]
    data['content_hash'] = file_data.map(&:to_hash)
    data['keys'] = file_data.headers
    data['rows'] = data['content'].size
    data['cols'] = file_data.headers.size

    csv_data = Hash.new
    csv_data[key] = data
   
    site.data.merge!(csv_data){ |shared_key| raise "csv and data named \"#{shared_key}\"" }
  end
end