class Confuse::Item

An {Item} is a class for storing a description piece of config.

Attributes

converter[R]
description[R]
required[R]

Public Class Methods

new(key, opts = {}) click to toggle source
# File lib/confuse/item.rb, line 6
def initialize(key, opts = {})
  @key = key
  @default, @description = opts.values_at(:default, :description)

  @converter = opts[:converter]
  @type = opts[:type]

  @required = opts.key?(:required) ? opts[:required] : true
end

Public Instance Methods

convert(value) click to toggle source
# File lib/confuse/item.rb, line 18
def convert(value)
  converter.call(value)
end
default(config) click to toggle source
# File lib/confuse/item.rb, line 22
def default(config)
  raise Errors::Undefined.new(@key) if @required && @default.nil?

  @default.respond_to?(:call) ? @default.call(config) : @default
end
to_hash() click to toggle source
# File lib/confuse/item.rb, line 37
def to_hash
  {
    :description => @description,
    :default => @default
  }
end
to_s() click to toggle source
# File lib/confuse/item.rb, line 28
def to_s
  default = if @default && !@default.respond_to?(:call)
              "default: #{@default}"
            else
              ''
            end
  "#{@key}:\t#{description} #{default}"
end

Private Instance Methods

type() click to toggle source
# File lib/confuse/item.rb, line 46
def type
  @type || type_from_default || String
end
type_from_default() click to toggle source
# File lib/confuse/item.rb, line 50
def type_from_default
  unless @default.nil?
    case @default
    when TrueClass, FalseClass
      :bool
    when Proc
      String
    else
      @default.class
    end
  end
end