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