class Jazzy::Config::Attribute

rubocop:disable Naming/AccessorMethodName

Attributes

command_line[R]
config_file_key[R]
default[R]
description[R]
name[R]
parse[R]
per_module[R]

Public Class Methods

new(name, description: nil, command_line: nil, default: nil, parse: ->(x) { x } click to toggle source
# File lib/jazzy/config.rb, line 18
def initialize(name, description: nil, command_line: nil,
               default: nil, parse: ->(x) { x }, per_module: false)
  @name = name.to_s
  @description = Array(description)
  @command_line = Array(command_line)
  @default = default
  @parse = parse
  @config_file_key = full_command_line_name || @name
  @per_module = per_module
end

Public Instance Methods

attach_to_option_parser(config, opt) click to toggle source
# File lib/jazzy/config.rb, line 54
def attach_to_option_parser(config, opt)
  return if command_line.empty?

  opt.on(*command_line, *description) do |val|
    set(config, val)
  end
end
configured?(config) click to toggle source
# File lib/jazzy/config.rb, line 50
def configured?(config)
  config.method("#{name}_configured").call
end
get(config) click to toggle source
# File lib/jazzy/config.rb, line 29
def get(config)
  config.method(name).call
end
set(config, val, mark_configured: true) click to toggle source
# File lib/jazzy/config.rb, line 37
def set(config, val, mark_configured: true)
  set_raw(config, config.instance_exec(val, &parse))
  config.method("#{name}_configured=").call(true) if mark_configured
end
set_if_unconfigured(config, val) click to toggle source
# File lib/jazzy/config.rb, line 46
def set_if_unconfigured(config, val)
  set(config, val) unless configured?(config)
end
set_raw(config, val) click to toggle source
# File lib/jazzy/config.rb, line 33
def set_raw(config, val)
  config.method("#{name}=").call(val)
end
set_to_default(config) click to toggle source
# File lib/jazzy/config.rb, line 42
def set_to_default(config)
  set(config, default, mark_configured: false) if default
end

Private Instance Methods

full_command_line_name() click to toggle source
# File lib/jazzy/config.rb, line 64
def full_command_line_name
  long_option_names = command_line.map do |opt|
    Regexp.last_match(1) if opt.to_s =~ %r{
      ^--           # starts with double dash
      (?:\[no-\])?  # optional prefix for booleans
      ([^\s]+)      # long option name
    }x
  end
  if long_option_name = long_option_names.compact.first
    long_option_name.tr('-', '_')
  end
end