class ForemanMaintain::CSVParser
Public Class Methods
new()
click to toggle source
# File lib/foreman_maintain/csv_parser.rb, line 3 def initialize reset_parser end
Public Instance Methods
parse(data)
click to toggle source
# File lib/foreman_maintain/csv_parser.rb, line 7 def parse(data) return [] if data.nil? reset_parser data.each_char do |char| handle_escape(char) || handle_quoting(char) || handle_comma(char) || add_to_buffer(char) end unless @last_quote.nil? raise(ArgumentError, format('Illegal quoting in %s', @raw_buffer)) end clean_buffer @value end
Private Instance Methods
add_to_buffer(char)
click to toggle source
# File lib/foreman_maintain/csv_parser.rb, line 62 def add_to_buffer(char) @buffer += char @raw_buffer += char end
clean_buffer()
click to toggle source
# File lib/foreman_maintain/csv_parser.rb, line 75 def clean_buffer @value << @buffer @raw_buffer = '' @buffer = '' end
handle_comma(char)
click to toggle source
# File lib/foreman_maintain/csv_parser.rb, line 22 def handle_comma(char) if char == ',' clean_buffer true else false end end
handle_escape(char)
click to toggle source
# File lib/foreman_maintain/csv_parser.rb, line 48 def handle_escape(char) if @escape add_to_buffer(char) @escape = false true elsif char == '\\' @escape = true @raw_buffer += char true else false end end
handle_quoting(char)
click to toggle source
# File lib/foreman_maintain/csv_parser.rb, line 31 def handle_quoting(char) if @last_quote.nil? && ["'", '"'].include?(char) @last_quote = char @raw_buffer += char true elsif @last_quote == char @last_quote = nil @raw_buffer += char true elsif @last_quote add_to_buffer(char) true else false end end
reset_parser()
click to toggle source
# File lib/foreman_maintain/csv_parser.rb, line 67 def reset_parser @value = [] @buffer = '' @raw_buffer = '' @escape = false @last_quote = nil end