Class: RubyText::Settings
- Inherits:
-
Object
- Object
- RubyText::Settings
- Defined in:
- lib/settings.rb
Overview
Hmm, all these are module-level…?
Constant Summary collapse
- ValidArgs =
[:raw, :_raw, :echo, :_echo, :cbreak, :_cbreak, :keypad, :_keypad, :cursor, :_cursor]
Instance Method Summary collapse
-
#initialize ⇒ Settings
constructor
A new instance of Settings.
- #reset ⇒ Object
- #reset_boolean ⇒ Object
- #set(*syms) ⇒ Object
- #set_boolean(raw: nil, echo: nil, cbreak: nil, keypad: nil, cursor: nil) ⇒ Object
- #set_curses(**hash) ⇒ Object
Constructor Details
#initialize ⇒ Settings
Returns a new instance of Settings.
7 8 9 10 11 12 13 14 |
# 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 |
Instance Method Details
#reset ⇒ Object
66 67 68 |
# File 'lib/settings.rb', line 66 def reset # FIXME - call reset_boolean end |
#reset_boolean ⇒ Object
45 46 47 48 |
# File 'lib/settings.rb', line 45 def reset_boolean @current = @stack.pop rescue @stack[0] set_curses(@current) end |
#set(*syms) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/settings.rb', line 50 def set(*syms) File.open("/tmp/dammit1", "w") {|f| f.puts "-- set: syms = #{syms.inspect}" } 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 File.open("/tmp/dammit2", "w") {|f| f.puts "-- list = #{list.inspect}" } set_boolean(list) # allow a block here? end |
#set_boolean(raw: nil, echo: nil, cbreak: nil, keypad: nil, cursor: nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# 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) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 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 |