Sha256: fe6f121271ccbcdbbc2b3ae77122b682bb4213e819137806af5c860f46768f9c
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
require "doctordata/version" require 'csv' require 'roo' require 'faraday' module Doctordata class Parser class << self def from_csv_table(table) # there is much room to do performance tuning table. map do |row| row. reject { |k, v| v == nil || v == '' }. reject { |k, v| k == nil || k == '' || k.start_with?('#') }. map { |k, v| "#{k}=#{v}" }. join('&') end. map { |s| Faraday::NestedParamsEncoder.decode(s) } end def from_csv_path(path) table = CSV.read(path, headers: true) from_csv_table(table) end def from_csv_str(csv_str) table = CSV.parse(csv_str, :headers => true) from_csv_table(table) end def from_excel(file_or_path) xlsx = Roo::Spreadsheet.open(file_or_path, extension: :xlsx) hash = {} xlsx.each_with_pagename do |name, sheet| csv_str = sheet.to_csv hash[name] = from_csv_str(csv_str) end hash end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
doctordata-0.2.1 | lib/doctordata.rb |