class NeverBounce::CLI::Script::JobsCreate::SuppliedInputParser

The parser for SUPPLIED_INPUT= environment variable. @see process @see CLI::Feature::BasicInitialize

Attributes

separator[W]

Public Instance Methods

[](content)
Alias for: process
process(content) click to toggle source

Process content, return parsed structure.

NOTE: The parser doesn't validate e-mail addresses.

process("alice@isp.com Alice Roberts;bob.smith@gmail.com Bob Smith")
# => [["alice@isp.com", "Alice Roberts"], ["bob.smith@gmail.com", "Bob Smith"]]

@return [Array<email, name>]

# File lib/never_bounce/cli/script/jobs_create/supplied_input_parser.rb, line 30
def process(content)
  # NOTE: Keep it stage-procedural for easier debugging.
  chunks = content.split(separator).map(&:strip).reject(&:empty?)

  out = chunks.map do |chunk|
    if (chunk =~ /^(.+?)\s+(.+)$/)
      [$1, $2]
    else
      [chunk, ""]
    end
  end

  out.empty? and raise ArgumentError, "Empty content"

  out
end
Also aliased as: []
separator() click to toggle source

@return [Regexp]

# File lib/never_bounce/cli/script/jobs_create/supplied_input_parser.rb, line 16
def separator
  @separator ||= /[;,\n]/
end