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