class RubyText::Settings
Hmm, all these are module-level…?
Constants
- ValidArgs
Public Class Methods
new()
click to toggle source
# File lib/settings.rb, line 7 def initialize @defaults = {raw: false, echo: false, cbreak: true, keypad: true, cursor: true} @current = @defaults.dup @stack = [] @stack.push @current # Note: Never let stack be empty set_curses(@current) # Set them for real # FIXME To be continued... end
Public Instance Methods
reset()
click to toggle source
# File lib/settings.rb, line 64 def reset # FIXME - call reset_boolean end
reset_boolean()
click to toggle source
# File lib/settings.rb, line 45 def reset_boolean @current = @stack.pop rescue @stack[0] set_curses(@current) end
set(*syms)
click to toggle source
# File lib/settings.rb, line 50 def set(*syms) raise ArgumentError unless syms - ValidArgs == [] # FIXME - call set_boolean list = {} syms.each do |sym| str = sym.to_s val = str[0] != "_" sym0 = val ? sym : str[1..-1].to_sym list[sym0] = val end set_boolean(list) # allow a block here? end
set_boolean(raw: nil, echo: nil, cbreak: nil, keypad: nil, cursor: nil)
click to toggle source
# File lib/settings.rb, line 34 def set_boolean(raw: nil, echo: nil, cbreak: nil, keypad: nil, cursor: nil) raw ||= @current[:raw] echo ||= @current[:echo] cbreak ||= @current[:cbreak] keypad ||= @current[:keypad] cursor ||= @current[:cursor] @stack.push @current @current = {raw: raw, echo: echo, cbreak: cbreak, keypad: keypad, cursor: cursor} set_curses(@current) end
set_curses(**hash)
click to toggle source
# File lib/settings.rb, line 16 def set_curses(**hash) # Later: check for bad keys hash.each_pair do |sym, val| case [sym, val] when [:cbreak, true]; Curses.cbreak when [:cbreak, false]; Curses.nocbreak when [:raw, true]; Curses.raw when [:raw, false]; Curses.noraw when [:echo, true]; Curses.echo when [:echo, false]; Curses.noecho when [:keypad, true]; Curses.stdscr.keypad(true) when [:keypad, false]; Curses.stdscr.keypad(false) when [:cursor, true]; Curses.curs_set(1) when [:cursor, false]; Curses.curs_set(0) end end end