class SlackProgressBar::Config

Constants

CIRCLE_SUFFIX
DEFAULT_ALIASES
DEFAULT_LETTERS

The default letters stand for: purple, blue, green, yellow, orange, red, and white. See SlackProgressBar::Generator::DEFAULT_COLORS for more information.

DEFAULT_PREFIX
InvalidConfigError
LEFT_CAP_SUFFIX
LETTER_PATTERN
PREFIX_PATTERN
RIGHT_CAP_SUFFIX
SEPARATOR

Attributes

aliases[RW]
letters[RW]
prefix[RW]

Public Class Methods

new() click to toggle source
# File lib/slack_progress_bar/config.rb, line 34
def initialize
  @prefix = DEFAULT_PREFIX
  @letters = DEFAULT_LETTERS
  @aliases = DEFAULT_ALIASES
end

Public Instance Methods

circle_suffix() click to toggle source
# File lib/slack_progress_bar/config.rb, line 117
def circle_suffix
  CIRCLE_SUFFIX
end
default_letter() click to toggle source
# File lib/slack_progress_bar/config.rb, line 101
def default_letter
  letters.last
end
left_cap_suffix() click to toggle source
# File lib/slack_progress_bar/config.rb, line 109
def left_cap_suffix
  LEFT_CAP_SUFFIX
end
right_cap_suffix() click to toggle source
# File lib/slack_progress_bar/config.rb, line 113
def right_cap_suffix
  RIGHT_CAP_SUFFIX
end
separator() click to toggle source
# File lib/slack_progress_bar/config.rb, line 105
def separator
  SEPARATOR
end
valid?() click to toggle source
# File lib/slack_progress_bar/config.rb, line 93
def valid?
  validate!
rescue InvalidConfigError
  false
else
  true
end
validate!() click to toggle source
# File lib/slack_progress_bar/config.rb, line 40
def validate!
  unless prefix.is_a?(String)
    raise InvalidConfigError, "The prefix must be a String. Found #{prefix.class.name}: #{prefix.inspect}"
  end

  unless PREFIX_PATTERN.match?(prefix)
    raise InvalidConfigError, "The prefix must only contain digits 0-9 and/or lowercase letters a-z. Found: #{prefix.inspect}"
  end

  unless letters.is_a?(Array)
    raise InvalidConfigError, "Configured letters must be an Array. Found #{letters.class.name}: #{letters.inspect}"
  end

  case letters.size
  when 0
    raise InvalidConfigError, "Provide at least two letters."
  when 1
    raise InvalidConfigError, "Provide at least two letters. The last letter will be used as the default."
  end

  unless letters.uniq.size == letters.size
    raise InvalidConfigError, "Configured letters must be unique."
  end

  letters.each do |letter|
    unless letter.is_a?(String)
      raise InvalidConfigError, "Every letter must be a String. Found #{letter.class.name}: #{letter.inspect}"
    end

    unless LETTER_PATTERN.match?(letter)
      raise InvalidConfigError, "The only valid letters are lowercase a-z. Found: #{letter.inspect}"
    end
  end

  unless aliases.is_a?(Hash)
    raise InvalidConfigError, "Configured aliases must be a Hash. Found #{aliases.class.name}: #{aliases.inspect}"
  end

  aliases.each do |name, letter|
    unless name.is_a?(Symbol)
      raise InvalidConfigError, "Every alias must have a Symbol name. Found #{name.class.name}: #{name.inspect}"
    end

    unless letter.is_a?(String)
      raise InvalidConfigError, "Every alias must point to a String letter. Found #{letter.class.name}: #{letter.inspect}"
    end

    unless letters.include?(letter)
      raise InvalidConfigError, "Every alias must point to a valid letter. Found: #{letter.inspect}"
    end
  end
end