rubytext 0.1.10 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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