rubytext 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rubytext_version.rb +1 -1
  3. data/lib/settings.rb +121 -59
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 25332b6e7f7962ccc17a01bd12b8b1b694044b0849e8d5753dece732b87a20f8
4
- data.tar.gz: eacd7986b4f28031736f5f1161fd5d0a8a636121e456b11fc644a96e3c5fe1ef
3
+ metadata.gz: ef493cd27a795e722bc61332718af2332c38f6530e74ee3b00289e2507f2ddc6
4
+ data.tar.gz: e88ba1983fea2d0b1aa5b88f57197a50d571fd55ab35bf8556f53da532b2b8fe
5
5
  SHA512:
6
- metadata.gz: 9a7c4ff165b93fc05b31b8c345cfd243449f6ec3efbacc1068f8fd4db56ffb0fb0dcee161c5141198d4ded867c12d789bdd2d4f654a1f05918646d35fd4b5efc
7
- data.tar.gz: 33f68ebebd48faabf3bef69f96a12df62376c95bb8f204e9ba39e7875a81af4687565b973956e61eacde785e9920cf141630e727dbb857161f9be096aebd83b9
6
+ metadata.gz: 72f0c62756d9cbf4f19c75319be3707f7337010d73dbee57cdcd73bc099ee15c5ee918116d3cc3014c92ebdbc72ddad121f629712c3eadc790c16051f9271a22
7
+ data.tar.gz: 1279205bdddfbff8a017a1e6b07dc82631738ac6dae99a607b146784aecfc67834af5bddc2e6a4d3a3e1ef7119ad193b2d549aa97e8c31bbf69d0785d8ef3b83
@@ -1,6 +1,6 @@
1
1
 
2
2
  module RubyText
3
- VERSION = "0.1.10"
3
+ VERSION = "0.1.11"
4
4
 
5
5
  Path = File.expand_path(File.join(File.dirname(__FILE__)))
6
6
  end
data/lib/settings.rb CHANGED
@@ -4,7 +4,67 @@ module RubyText
4
4
  ValidArgs = [:raw, :_raw, :echo, :_echo, :cbreak, :_cbreak,
5
5
  :keypad, :_keypad, :cursor, :_cursor]
6
6
 
7
- def self.started
7
+
8
+ class Settings
9
+ # raw echo cbreak keypad cursor
10
+ def initialize
11
+ @defaults = {raw: false, echo: false, cbreak: true, keypad: true, cursor: true}
12
+ @current = @defaults.dup
13
+ @stack = []
14
+ @stack.push @current # Note: Never let stack be empty
15
+ set_curses(@current) # Set them for real
16
+ # FIXME To be continued...
17
+ end
18
+
19
+ def set_curses(**hash)
20
+ # Later: check for bad keys
21
+ hash.each_pair do |sym, val|
22
+ case [sym, val]
23
+ when [:cbreak, true]; Curses.cbreak
24
+ when [:cbreak, false]; Curses.nocbreak
25
+ when [:raw, true]; Curses.raw
26
+ when [:raw, false]; Curses.noraw
27
+ when [:echo, true]; Curses.echo
28
+ when [:echo, false]; Curses.noecho
29
+ when [:keypad, true]; STDSCR.cwin.keypad(true)
30
+ when [:keypad, false]; STDSCR.cwin.keypad(false)
31
+ when [:cursor, true]; Curses.curs_set(1)
32
+ when [:cursor, false]; Curses.curs_set(0)
33
+ end
34
+ end
35
+ end
36
+
37
+ def set_boolean(raw: nil, echo: nil, cbreak: nil, keypad: nil, cursor: nil)
38
+ raw ||= @current[:raw]
39
+ echo ||= @current[:echo]
40
+ cbreak ||= @current[:cbreak]
41
+ keypad ||= @current[:keypad]
42
+ cursor ||= @current[:cursor]
43
+ @stack.push @current
44
+ @current = {raw: raw, echo: echo, cbreak: cbreak, keypad: keypad, cursor: cursor}
45
+ set_curses(@current)
46
+ end
47
+
48
+ def reset_boolean
49
+ @current = @stack.pop rescue @stack[0]
50
+ set_curses(@current)
51
+ end
52
+
53
+ def set(syms)
54
+ # FIXME - call set_boolean
55
+ # allow a block here?
56
+ end
57
+
58
+ def reset
59
+ # FIXME - call reset_boolean
60
+ end
61
+ end
62
+
63
+ def self.started # remove later
64
+ @started
65
+ end
66
+
67
+ def self.started?
8
68
  @started
9
69
  end
10
70
 
@@ -46,74 +106,76 @@ module RubyText
46
106
  @flags
47
107
  end
48
108
 
49
- # FIXME Refactor the Hal out of this.
109
+ # FIXME Refactor the Hal out of this...
50
110
 
51
- def self.inverse_flag(flag)
52
- sflag = flag.to_s
53
- if sflag[0] == "_"
54
- sflag[1..-1].to_sym
55
- else
56
- ("_" + sflag).to_sym
111
+ def self.inverse_flag(flag)
112
+ sflag = flag.to_s
113
+ if sflag[0] == "_"
114
+ sflag[1..-1].to_sym
115
+ else
116
+ ("_" + sflag).to_sym
117
+ end
57
118
  end
58
- end
59
119
 
60
- def self.set(*args) # Allow a block?
61
- standard = [:cbreak, :raw, :echo]
62
- @defaults = [:cbreak, :_echo, :keypad]
63
- @flags = @defaults.dup
64
- save_flags
65
- args.each do |arg|
66
- @flags += [arg]
67
- inv = inverse_flag(arg)
68
- @flags -= [inv]
69
- @flags.uniq!
70
- flag = arg.to_s
71
- if standard.include?(flag.to_sym) || standard.include?(flag.sub(/no/, "_").to_sym)
72
- Curses.send(flag)
73
- elsif flag[0] == "_" && standard.include?(flag[1..-1].to_sym)
74
- flag.sub!(/^_/, "no")
75
- Curses.send(flag)
76
- else
77
- case flag.to_sym
78
- when :cursor
79
- Curses.curs_set(1)
80
- when :_cursor, :nocursor
81
- Curses.curs_set(0)
82
- when :keypad
83
- STDSCR.cwin.keypad(true)
84
- when :_keypad
85
- STDSCR.cwin.keypad(false)
86
- else
87
- # self.stop
88
- rest_flags # prevent propagating error in test
89
- raise RTError("flag = #{flag.inspect}")
120
+ def self.set(*args) # Allow a block?
121
+ standard = [:cbreak, :raw, :echo]
122
+ @defaults = [:cbreak, :_echo, :keypad]
123
+ @flags = @defaults.dup
124
+ save_flags
125
+ args.each do |arg|
126
+ @flags += [arg]
127
+ inv = inverse_flag(arg)
128
+ @flags -= [inv]
129
+ @flags.uniq!
130
+ flag = arg.to_s
131
+ if standard.include?(flag.to_sym) || standard.include?(flag.sub(/no/, "_").to_sym)
132
+ Curses.send(flag)
133
+ elsif flag[0] == "_" && standard.include?(flag[1..-1].to_sym)
134
+ flag.sub!(/^_/, "no")
135
+ Curses.send(flag)
136
+ else
137
+ case flag.to_sym
138
+ when :cursor
139
+ Curses.curs_set(1)
140
+ when :_cursor, :nocursor
141
+ Curses.curs_set(0)
142
+ when :keypad
143
+ STDSCR.cwin.keypad(true)
144
+ when :_keypad
145
+ STDSCR.cwin.keypad(false)
146
+ else
147
+ # self.stop
148
+ rest_flags # prevent propagating error in test
149
+ raise RTError("flag = #{flag.inspect}")
150
+ end
90
151
  end
91
152
  end
153
+
154
+ if block_given?
155
+ yield
156
+ rest_flags
157
+ end
92
158
  end
93
159
 
94
- if block_given?
95
- yield
160
+ def self.reset
96
161
  rest_flags
97
162
  end
98
- end
99
163
 
100
- def self.reset
101
- rest_flags
102
- end
164
+ def self.save_flags
165
+ @fstack ||= []
166
+ @flags.uniq!
167
+ @fstack.push @flags
168
+ end
103
169
 
104
- def self.save_flags
105
- @fstack ||= []
106
- @flags.uniq!
107
- @fstack.push @flags
108
- end
170
+ def self.rest_flags
171
+ @flags = @fstack.pop
172
+ @flags.uniq!
173
+ self.set(*@flags)
174
+ rescue
175
+ @flags = @defaults
176
+ end
109
177
 
110
- def self.rest_flags
111
- @flags = @fstack.pop
112
- @flags.uniq!
113
- self.set(*@flags)
114
- rescue
115
- @flags = @defaults
116
- end
178
+ # ... end of ugly settings weirdness
117
179
 
118
180
  def self.stop
119
181
  @started = false
@@ -132,11 +194,11 @@ module RubyText
132
194
  end
133
195
  end
134
196
 
135
- def self.hide_cursor
197
+ def self.hide_cursor # remove later?
136
198
  Curses.curs_set(0)
137
199
  end
138
200
 
139
- def self.show_cursor
201
+ def self.show_cursor # remove later?
140
202
  Curses.curs_set(1)
141
203
  end
142
204
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubytext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-10 00:00:00.000000000 Z
11
+ date: 2019-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses