Class: Byebug::Setting
- Inherits:
-
Object
show all
- Defined in:
- lib/byebug/setting.rb
Overview
Parent class for all byebug settings.
Direct Known Subclasses
AutoevalSetting, AutoirbSetting, AutolistSetting, AutoreloadSetting, AutosaveSetting, BasenameSetting, CallstyleSetting, ForcestepSetting, FullpathSetting, HistfileSetting, HistsizeSetting, LinetraceSetting, ListsizeSetting, PostMortemSetting, StackOnErrorSetting, TestingSetting, TracingPlusSetting, VerboseSetting, WidthSetting
Constant Summary
collapse
- DEFAULT =
false
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of Setting.
10
11
12
|
# File 'lib/byebug/setting.rb', line 10
def initialize
@value = self.class::DEFAULT
end
|
Instance Attribute Details
#value ⇒ Object
Returns the value of attribute value.
6
7
8
|
# File 'lib/byebug/setting.rb', line 6
def value
@value
end
|
Class Method Details
.[](name) ⇒ Object
18
19
20
|
# File 'lib/byebug/setting.rb', line 18
def self.[](name)
settings[name].value
end
|
.[]=(name, value) ⇒ Object
22
23
24
|
# File 'lib/byebug/setting.rb', line 22
def self.[]=(name, value)
settings[name].value = value
end
|
.boolean?(name) ⇒ Boolean
26
27
28
29
|
# File 'lib/byebug/setting.rb', line 26
def self.boolean?(name)
key = (name =~ /^no/ ? name[2..-1] : name).to_sym
settings[key].boolean?
end
|
.exists?(name) ⇒ Boolean
45
46
47
48
|
# File 'lib/byebug/setting.rb', line 45
def self.exists?(name)
key = (name =~ /^no/ ? name[2..-1] : name).to_sym
boolean?(key) ? settings.include?(key) : settings.include?(name.to_sym)
end
|
.find(shortcut) ⇒ Object
60
61
62
63
64
65
66
|
# File 'lib/byebug/setting.rb', line 60
def self.find(shortcut)
abbr = shortcut =~ /^no/ ? shortcut[2..-1] : shortcut
matches = settings.select do |key, value|
value.boolean? ? key =~ /#{abbr}/ : key =~ /#{shortcut}/
end
matches.size == 1 ? matches.keys.first : nil
end
|
.help(cmd, subcmd) ⇒ Object
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/byebug/setting.rb', line 77
def self.help(cmd, subcmd)
if subcmd
camelized = subcmd.split('_').map { |w| w.capitalize }.join
setting = Byebug.const_get("#{camelized}Setting").new
<<-EOH.gsub(/^ {8}/, '')
#{cmd} #{setting.to_sym} <value>
#{setting.banner}.
EOH
else
command = Byebug.const_get("#{cmd.capitalize}Command")
command.description + help_all
end
end
|
.help_all ⇒ Object
68
69
70
71
72
73
74
75
|
# File 'lib/byebug/setting.rb', line 68
def self.help_all
output = " List of settings supported in byebug:\n --\n"
width = settings.keys.max_by(&:size).size
settings.values.each do |sett|
output << format(" %-#{width}s -- %s\n", sett.to_sym, sett.banner)
end
output + "\n"
end
|
.integer?(name) ⇒ Boolean
31
32
33
|
# File 'lib/byebug/setting.rb', line 31
def self.integer?(name)
settings[name.to_sym].integer?
end
|
.load ⇒ Object
50
51
52
53
54
55
56
57
58
|
# File 'lib/byebug/setting.rb', line 50
def self.load
Dir.glob(File.expand_path('../settings/*.rb', __FILE__)).each do |file|
require file
end
Byebug.constants.grep(/[a-z]Setting/).map do |name|
setting = Byebug.const_get(name).new
settings[setting.to_sym] = setting
end
end
|
.settings ⇒ Object
14
15
16
|
# File 'lib/byebug/setting.rb', line 14
def self.settings
@settings ||= {}
end
|
Instance Method Details
#boolean? ⇒ Boolean
35
36
37
|
# File 'lib/byebug/setting.rb', line 35
def boolean?
[true, false].include?(value)
end
|
#help ⇒ Object
94
95
96
|
# File 'lib/byebug/setting.rb', line 94
def help
"\n #{banner}.\n\n"
end
|
#integer? ⇒ Boolean
39
40
41
42
43
|
# File 'lib/byebug/setting.rb', line 39
def integer?
Integer(value) ? true : false
rescue ArgumentError
false
end
|
#to_s ⇒ Object
103
104
105
|
# File 'lib/byebug/setting.rb', line 103
def to_s
"#{to_sym} is #{value ? 'on' : 'off'}\n"
end
|
#to_sym ⇒ Object
98
99
100
101
|
# File 'lib/byebug/setting.rb', line 98
def to_sym
name = self.class.name.gsub(/^Byebug::/, '').gsub(/Setting$/, '')
name.gsub(/(.)([A-Z])/, '\1_\2').downcase.to_sym
end
|