Sha256: 378afa9a7a20bbb7dbcd6f5a6b008b78b99697ea809330f9bf4273fc6f4311ab
Contents?: true
Size: 1.08 KB
Versions: 1
Compression:
Stored size: 1.08 KB
Contents
require 'delegate' require 'csv' require 'digest/md5' module Peddler # @api private class FlatFileParser < SimpleDelegator # http://stackoverflow.com/questions/8073920/importing-csv-quoting-error-is-driving-me-nuts OPTIONS = { col_sep: "\t", quote_char: "\x00", headers: true } attr_reader :content, :summary, :encoding def initialize(res, encoding) super(res) @encoding = encoding extract_content end def parse CSV.parse(scrub_content, OPTIONS) if content end def records_count summarize if summary end def valid? headers['Content-MD5'] == Digest::MD5.base64digest(body) end private def extract_content if has_summary? @summary, @content = body.split("\n\n") else @content = body.dup end end def scrub_content content.force_encoding(encoding).encode('UTF-8') end def has_summary? body.start_with?('Feed Processing Summary') end def summarize Hash[summary.split("\n\t")[1, 2].map { |line| line.split("\t\t") }] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
peddler-0.7.6 | lib/peddler/flat_file_parser.rb |