Class: Byebug::Setting

Inherits:
Object
  • Object
show all
Defined in:
lib/byebug/setting.rb

Overview

Parent class for all byebug settings.

Constant Summary collapse

DEFAULT =
false

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSetting

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

#valueObject

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

Returns:

  • (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

Returns:

  • (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_allObject



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

Returns:

  • (Boolean)


31
32
33
# File 'lib/byebug/setting.rb', line 31

def self.integer?(name)
  settings[name.to_sym].integer?
end

.loadObject



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

.settingsObject



14
15
16
# File 'lib/byebug/setting.rb', line 14

def self.settings
  @settings ||= {}
end

Instance Method Details

#boolean?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/byebug/setting.rb', line 35

def boolean?
  [true, false].include?(value)
end

#helpObject



94
95
96
# File 'lib/byebug/setting.rb', line 94

def help
  "\n  #{banner}.\n\n"
end

#integer?Boolean

Returns:

  • (Boolean)


39
40
41
42
43
# File 'lib/byebug/setting.rb', line 39

def integer?
  Integer(value) ? true : false
rescue ArgumentError
  false
end

#to_sObject



103
104
105
# File 'lib/byebug/setting.rb', line 103

def to_s
  "#{to_sym} is #{value ? 'on' : 'off'}\n"
end

#to_symObject



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