class Tenios::Blocks::CollectDigits

Constants

BLOCK_TYPE
TERMINATORS
VARIABLE_REGEX

Public Class Methods

new( announcement:, standard_announcement:, error_announcement:, standard_error_announcement:, variable:, min_digits:, max_digits:, terminator:, max_tries:, timeout: ) click to toggle source
# File lib/tenios/blocks/collect_digits.rb, line 10
def initialize(
  announcement:,
  standard_announcement:,
  error_announcement:,
  standard_error_announcement:,
  variable:,
  min_digits:,
  max_digits:,
  terminator:,
  max_tries:,
  timeout:
)
  @announcement = announcement
  @standard_announcement = !!standard_announcement
  @error_announcement = error_announcement
  @standard_error_announcement = !!standard_error_announcement
  @variable = variable
  @min_digits = min_digits
  @max_digits = max_digits
  @terminator = terminator
  @max_tries = max_tries
  @timeout = timeout

  validate!
end

Public Instance Methods

as_json(*) click to toggle source
# File lib/tenios/blocks/collect_digits.rb, line 36
def as_json(*)
  {
    blockType: BLOCK_TYPE,
    standardAnnouncement: @standard_announcement,
    announcementName: @announcement,
    standardErrorAnnouncement: @standard_error_announcement,
    errorAnnouncementName: @error_announcement,
    variableName: @variable,
    minDigits: @min_digits,
    maxDigits: @max_digits,
    terminator: @terminator,
    timeout: @timeout,
    maxTries: @max_tries
  }
end
validate!() click to toggle source
# File lib/tenios/blocks/collect_digits.rb, line 52
def validate!
  raise 'min_digits must be between 1-32 (inclusive)' unless (1..32).cover?(@min_digits)
  raise 'max_digits must be between 1-32 (inclusive)' unless (1..32).cover?(@max_digits)
  raise 'min_digits must be less than or equal to max_digits' unless @min_digits <= @max_digits
  raise "terminator must be one of #{TERMINATORS}" unless TERMINATORS.include?(@terminator)
  raise "variable must match #{VARIABLE_REGEX.inspect}" unless @variable.match?(VARIABLE_REGEX)
  raise 'max_tries must be between 1-10 (inclusive)' unless (1..10).cover?(@max_tries)
  raise 'timeout must be between 0-300 (inclusive)' unless (1..300).cover?(@timeout)
  raise 'announcement is required' if @announcement.nil?
  raise 'error_announcement is required' if @error_announcement.nil?
end