class Streamer::FactProviders::CSVProvider
CSVProvider
implements Finder
Provider interface
Attributes
key[R]
path[R]
Public Class Methods
new(path)
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 9 def initialize(path) @path = path end
Public Instance Methods
field_number(field)
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 39 def field_number(field) headers.index(field) + 1 end
find(key)
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 13 def find(key) @key = key return hash_result if segments.size == 2 return scalar_result if segments.size == 3 end
hash_result()
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 23 def hash_result Hash[headers.zip CSV.parse_line(lines)] end
headers()
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 35 def headers @headers ||= CSV.parse_line(`head -n 1 #{path}`) end
lines()
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 31 def lines `#{processing_statement}`.strip end
processing_statement()
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 43 def processing_statement segs = segments return unless segs.size > 1 && segs.size < 4 <<-STMT awk -F'","|,' '($#{field_number(segs[0])} ~ /^#{segs[1]}$/){print $0}' #{path} STMT end
scalar_result()
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 27 def scalar_result hash_result[segments[2]] end
segments()
click to toggle source
# File lib/streamer/fact_providers/csv_provider.rb, line 19 def segments key.split('.') end