Sha256: 7f7fa1b1f703bcaa9f1841068601e538186ecab5e43c4a7e16b131a82b99f468

Contents?: true

Size: 925 Bytes

Versions: 8

Compression:

Stored size: 925 Bytes

Contents

# frozen_string_literal: true

require "csv"

module Decidim
  module Verifications
    module CsvCensus
      # A data processor for get emails data form a csv file
      #
      # Enable this methods:
      #
      # - .error with an array of rows with errors in the csv file
      # - .values an array with emails readed from the csv file
      #
      # Returns nothing
      class Data
        attr_reader :errors, :values

        def initialize(file)
          @file = file
          @values = []
          @errors = []

          CSV.foreach(@file, encoding: "BOM|UTF-8") do |row|
            process_row(row)
          end
        end

        private

        def process_row(row)
          user_mail = row.first
          if user_mail.present? && user_mail.match?(::Devise.email_regexp)
            values << user_mail
          else
            errors << row
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
decidim-verifications-0.28.5 app/models/decidim/verifications/csv_census/data.rb
decidim-verifications-0.28.4 app/models/decidim/verifications/csv_census/data.rb
decidim-verifications-0.28.3 app/models/decidim/verifications/csv_census/data.rb
decidim-verifications-0.28.2 app/models/decidim/verifications/csv_census/data.rb
decidim-verifications-0.28.1 app/models/decidim/verifications/csv_census/data.rb
decidim-verifications-0.28.0 app/models/decidim/verifications/csv_census/data.rb
decidim-verifications-0.28.0.rc5 app/models/decidim/verifications/csv_census/data.rb
decidim-verifications-0.28.0.rc4 app/models/decidim/verifications/csv_census/data.rb