class Decidim::DirectVerifications::Parsers::MetadataParser

Constants

I18N_SCOPE

Public Instance Methods

header() click to toggle source
# File lib/decidim/direct_verifications/parsers/metadata_parser.rb, line 11
def header
  @header ||= begin
    header_row = lines[0].chomp
    header_row = tokenize(header_row)
    normalize_header(header_row)
  end
end
lines() click to toggle source
# File lib/decidim/direct_verifications/parsers/metadata_parser.rb, line 19
def lines
  @lines ||= StringIO.new(txt).readlines
end
parse_data(email, line, header) click to toggle source
# File lib/decidim/direct_verifications/parsers/metadata_parser.rb, line 23
def parse_data(email, line, header)
  tokens = tokenize(line)

  hash = {}
  header.each_with_index do |column, index|
    value = tokens[index]
    next if value&.include?(email)

    hash[column] = value
  end
  hash
end

Private Instance Methods

normalize_header(line) click to toggle source
# File lib/decidim/direct_verifications/parsers/metadata_parser.rb, line 44
def normalize_header(line)
  line.map do |field|
    raise InputParserError, I18n.t("#{I18N_SCOPE}.create.missing_header") if field.nil?

    field.to_sym.downcase
  end
end
tokenize(line) click to toggle source
# File lib/decidim/direct_verifications/parsers/metadata_parser.rb, line 38
def tokenize(line)
  CSV.parse_line(line).map do |token|
    token&.strip
  end
end