rubytext 0.0.41 → 0.0.42
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.
- checksums.yaml +4 -4
- data/lib/menu.rb +3 -1
- data/lib/navigation.rb +73 -0
- data/lib/rubytext.rb +13 -230
- data/lib/settings.rb +71 -0
- data/lib/version.rb +1 -1
- data/lib/window.rb +91 -0
- data/rubytext.gemspec +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3bc88c14a4cf43b7d4669cc1e00e408983f633cf72d1a04a3310c17c538b8e7
|
4
|
+
data.tar.gz: 2f9476d26e485a802425efa8f3b0c8faf9cff875e60105f487f44d14ee22e1f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f368ca6d83dbe958071972a5995a8e20ef829572342eb8438deb64b28c1cbdd21b42e1f81c31a1e63f24e1efe24975e72eb3d3e1ae5f0cc24788c0992f0d021
|
7
|
+
data.tar.gz: 11282127ca9e72e7ee1dde18f405ceed426d4435ab3a48680d3d598a89fd6cabd1f3e27afa2ddc6096215cbc24f88caa58b3b6c33ac260e35585cb9a90268fac
|
data/lib/menu.rb
CHANGED
@@ -22,7 +22,7 @@ module RubyText
|
|
22
22
|
|
23
23
|
def self.menu(r: 0, c: 0, items:)
|
24
24
|
high = items.size + 2
|
25
|
-
wide = items.map(&:length).max +
|
25
|
+
wide = items.map(&:length).max + 4
|
26
26
|
saveback(high, wide, r, c)
|
27
27
|
@mywin = RubyText.window(high, wide, r, c, true, fg: :white, bg: :blue)
|
28
28
|
RubyText.set(:raw)
|
@@ -77,10 +77,12 @@ module RubyText
|
|
77
77
|
when X::KEY_UP
|
78
78
|
if sel > 0
|
79
79
|
sel -= 1
|
80
|
+
handler.call(sel, items[sel])
|
80
81
|
end
|
81
82
|
when X::KEY_DOWN
|
82
83
|
if sel < max
|
83
84
|
sel += 1
|
85
|
+
handler.call(sel, items[sel])
|
84
86
|
end
|
85
87
|
when quit # parameter
|
86
88
|
win2.clear
|
data/lib/navigation.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
class RubyText::Window
|
2
|
+
def go(r, c)
|
3
|
+
save = self.rc
|
4
|
+
@win.setpos(r, c)
|
5
|
+
if block_given?
|
6
|
+
yield
|
7
|
+
go(*save) # No block here!
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def up(n=1)
|
12
|
+
r, c = rc
|
13
|
+
go r-n, c
|
14
|
+
end
|
15
|
+
|
16
|
+
def down(n=1)
|
17
|
+
r, c = rc
|
18
|
+
go r+n, c
|
19
|
+
end
|
20
|
+
|
21
|
+
def left(n=1)
|
22
|
+
r, c = rc
|
23
|
+
go r, c-n
|
24
|
+
end
|
25
|
+
|
26
|
+
def right(n=1)
|
27
|
+
r, c = rc
|
28
|
+
go r, c+n
|
29
|
+
end
|
30
|
+
|
31
|
+
def top
|
32
|
+
r, c = rc
|
33
|
+
go 0, c
|
34
|
+
end
|
35
|
+
|
36
|
+
def bottom
|
37
|
+
r, c = rc
|
38
|
+
rmax = self.rows - 1
|
39
|
+
go rmax, c
|
40
|
+
end
|
41
|
+
|
42
|
+
def up!
|
43
|
+
top
|
44
|
+
end
|
45
|
+
|
46
|
+
def down!
|
47
|
+
bottom
|
48
|
+
end
|
49
|
+
|
50
|
+
def left!
|
51
|
+
r, c = rc
|
52
|
+
go r, 0
|
53
|
+
end
|
54
|
+
|
55
|
+
def right!
|
56
|
+
r, c = rc
|
57
|
+
cmax = self.cols - 1
|
58
|
+
go r, cmax
|
59
|
+
end
|
60
|
+
|
61
|
+
def home
|
62
|
+
go 0, 0
|
63
|
+
end
|
64
|
+
|
65
|
+
def crlf
|
66
|
+
r, c = rc
|
67
|
+
go r+1, 0
|
68
|
+
end
|
69
|
+
|
70
|
+
def rc
|
71
|
+
[@win.cury, @win.curx]
|
72
|
+
end
|
73
|
+
end
|
data/lib/rubytext.rb
CHANGED
@@ -1,247 +1,30 @@
|
|
1
1
|
$LOAD_PATH << "lib"
|
2
2
|
|
3
3
|
require 'curses'
|
4
|
-
require 'version' # skeleton + version
|
5
4
|
|
6
5
|
X = Curses # shorthand
|
7
6
|
|
8
|
-
require '
|
9
|
-
require 'keys'
|
10
|
-
require 'menu'
|
7
|
+
require 'version'
|
11
8
|
|
9
|
+
require 'output' # RubyText, RubyText::Window, Kernel
|
10
|
+
require 'keys' # RubyText::Keys
|
11
|
+
require 'menu' # RubyText
|
12
|
+
require 'window' # RubyText::Window
|
13
|
+
require 'navigation' # RubyText::Window
|
14
|
+
require 'settings' # RubyText
|
12
15
|
|
13
|
-
|
14
|
-
attr_reader :fg, :bg
|
15
|
-
|
16
|
-
def self.colors(win, fg, bg)
|
17
|
-
cfg, cbg, cp = fb2cp(fg, bg)
|
18
|
-
X.init_pair(cp, cfg, cbg)
|
19
|
-
win.color_set(cp|X::A_NORMAL)
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.colors!(win, fg, bg)
|
23
|
-
colors(win, fg, bg)
|
24
|
-
num = win.maxx * win.maxy
|
25
|
-
win.setpos(0, 0)
|
26
|
-
win.addstr(' '*num)
|
27
|
-
win.setpos(0, 0)
|
28
|
-
win.refresh
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.main(fg: nil, bg: nil)
|
32
|
-
@main_win = X.init_screen
|
33
|
-
X.start_color
|
34
|
-
colors!(@main_win, fg, bg)
|
35
|
-
rows, cols = @main_win.maxy, @main_win.maxx
|
36
|
-
@screen = self.make(@main_win, rows, cols, 0, 0, false,
|
37
|
-
fg: fg, bg: bg)
|
38
|
-
# FIXME Why is this hard to inline?
|
39
|
-
# @win = @main_win
|
40
|
-
# obj = self.allocate
|
41
|
-
# obj.instance_eval do
|
42
|
-
# @outer = @win = @main_win
|
43
|
-
# @wide, @high, @r0, @c0 = cols, rows, 0, 0
|
44
|
-
# @fg, @bg = fg, bg
|
45
|
-
# @border = false
|
46
|
-
# @rows, @cols = @high, @wide
|
47
|
-
# @width, @height = @cols + 2, @rows + 2 if @border
|
48
|
-
# end
|
49
|
-
# @win = @main_win # FIXME?
|
50
|
-
# obj
|
51
|
-
@screen
|
52
|
-
end
|
53
|
-
|
54
|
-
def self.make(cwin, high, wide, r0, c0, border, fg: :white, bg: :black)
|
55
|
-
obj = self.allocate
|
56
|
-
obj.instance_eval do
|
57
|
-
debug " Inside instance_eval..."
|
58
|
-
@outer = @win = cwin
|
59
|
-
@wide, @high, @r0, @c0 = wide, high, r0, c0
|
60
|
-
@fg, @bg = fg, bg
|
61
|
-
@border = border
|
62
|
-
@rows, @cols = high, wide
|
63
|
-
@width, @height = @cols + 2, @rows + 2 if @border
|
64
|
-
end
|
65
|
-
obj
|
66
|
-
end
|
67
|
-
|
68
|
-
def fg=(sym)
|
69
|
-
self.colors(@win, fg, @bg)
|
70
|
-
end
|
71
|
-
end
|
16
|
+
# Skeleton... Can't put at top because of #initalize
|
72
17
|
|
73
18
|
module RubyText
|
74
|
-
|
75
|
-
# Allow a block?
|
76
|
-
standard = [:cbreak, :raw, :echo, :keypad]
|
77
|
-
@flags = [] # FIXME can set/reset individually. hmmm
|
78
|
-
args.each do |arg|
|
79
|
-
if standard.include? arg
|
80
|
-
flag = arg.to_s
|
81
|
-
@flags << arg
|
82
|
-
flag.sub!(/_/, "no")
|
83
|
-
X.send(flag)
|
84
|
-
else
|
85
|
-
@flags << arg
|
86
|
-
case arg
|
87
|
-
when :cursor
|
88
|
-
X.show_cursor
|
89
|
-
when :_cursor, :nocursor
|
90
|
-
X.hide_cursor
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def save_flags
|
97
|
-
@fstack ||= []
|
98
|
-
@fstack.push @flags
|
99
|
-
end
|
100
|
-
|
101
|
-
def rest_flags
|
102
|
-
@flags = @fstack.pop
|
19
|
+
module Keys
|
103
20
|
end
|
104
21
|
|
105
|
-
|
106
|
-
$debug = File.new(log, "w") if log
|
107
|
-
Object.const_set(:STDSCR, RubyText::Window.main(fg: fg, bg: bg))
|
108
|
-
$stdscr = STDSCR
|
109
|
-
fg, bg, cp = fb2cp(fg, bg)
|
110
|
-
self.set(:_echo, :cbreak, :raw) # defaults
|
111
|
-
# X.stdscr.keypad(true)
|
112
|
-
self.set(*args) # override defaults
|
113
|
-
end
|
114
|
-
|
115
|
-
# For passing through arbitrary method calls
|
116
|
-
# to the lower level...
|
117
|
-
|
118
|
-
def self.method_missing(name, *args)
|
119
|
-
debug "method_missing: #{name} #{args.inspect}"
|
120
|
-
if name[0] == '_'
|
121
|
-
X.send(name[1..-1], *args)
|
122
|
-
else
|
123
|
-
raise "#{name} #{args.inspect}" # NoMethodError
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def RubyText.window(high, wide, r0, c0, border=false, fg: nil, bg: nil)
|
128
|
-
RubyText::Window.new(high, wide, r0, c0, border, fg, bg)
|
129
|
-
end
|
130
|
-
|
131
|
-
def self.hide_cursor
|
132
|
-
X.curs_set(0)
|
133
|
-
end
|
134
|
-
|
135
|
-
def self.show_cursor
|
136
|
-
X.curs_set(1)
|
137
|
-
end
|
138
|
-
|
139
|
-
def self.show_cursor!
|
140
|
-
X.curs_set(2) # Doesn't work?
|
22
|
+
class Window
|
141
23
|
end
|
142
24
|
end
|
143
25
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
attr_reader :win, :rows, :cols, :width, :height
|
148
|
-
attr_writer :fg, :bg
|
149
|
-
|
150
|
-
def initialize(high=nil, wide=nil, r0=1, c0=1, border=false, fg=nil, bg=nil)
|
151
|
-
debug "RT::Win.init: #{[high, wide, r0, c0, border]}"
|
152
|
-
@wide, @high, @r0, @c0 = wide, high, r0, c0
|
153
|
-
@border, @fg, @bg = border, fg, bg
|
154
|
-
@win = X::Window.new(high, wide, r0, c0)
|
155
|
-
debug "outer = #{@win.inspect}"
|
156
|
-
debug "@border = #@border"
|
157
|
-
debug "Calling 'colors': #{[@win, fg, bg]}"
|
158
|
-
RubyText::Window.colors!(@win, fg, bg)
|
159
|
-
# self.clear(@main_win)
|
160
|
-
if @border
|
161
|
-
@win.box(Vert, Horiz)
|
162
|
-
@outer = @win
|
163
|
-
@outer.refresh
|
164
|
-
debug "About to call again: params = #{[high-2, wide-2, r0+1, c0+1]}"
|
165
|
-
@win = X::Window.new(high-2, wide-2, r0+1, c0+1) # , false, fg, bg) # relative now??
|
166
|
-
RubyText::Window.colors!(@win, fg, bg)
|
167
|
-
else
|
168
|
-
@outer = @win
|
169
|
-
end
|
170
|
-
@rows, @cols = @win.maxy, @win.maxx # unnecessary really...
|
171
|
-
@width, @height = @cols + 2, @rows + 2 if @border
|
172
|
-
@win.refresh
|
26
|
+
def import(meth, recv)
|
27
|
+
Kernel.module_eval do
|
28
|
+
define_method(meth) {|*args| recv.send(meth, *args) }
|
173
29
|
end
|
174
|
-
|
175
|
-
def go(r, c)
|
176
|
-
save = self.rc
|
177
|
-
@win.setpos(r, c)
|
178
|
-
if block_given?
|
179
|
-
yield
|
180
|
-
go(*save) # No block here!
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
def up(n=1)
|
185
|
-
r, c = rc
|
186
|
-
go r-n, c
|
187
|
-
end
|
188
|
-
|
189
|
-
def down(n=1)
|
190
|
-
r, c = rc
|
191
|
-
go r+n, c
|
192
|
-
end
|
193
|
-
|
194
|
-
def left(n=1)
|
195
|
-
r, c = rc
|
196
|
-
go r, c-n
|
197
|
-
end
|
198
|
-
|
199
|
-
def right(n=1)
|
200
|
-
r, c = rc
|
201
|
-
go r, c+n
|
202
|
-
end
|
203
|
-
|
204
|
-
def top
|
205
|
-
r, c = rc
|
206
|
-
go 0, c
|
207
|
-
end
|
208
|
-
|
209
|
-
def bottom
|
210
|
-
r, c = rc
|
211
|
-
rmax = self.rows - 1
|
212
|
-
go rmax, c
|
213
|
-
end
|
214
|
-
|
215
|
-
def up!
|
216
|
-
top
|
217
|
-
end
|
218
|
-
|
219
|
-
def down!
|
220
|
-
bottom
|
221
|
-
end
|
222
|
-
|
223
|
-
def left!
|
224
|
-
r, c = rc
|
225
|
-
go r, 0
|
226
|
-
end
|
227
|
-
|
228
|
-
def right!
|
229
|
-
r, c = rc
|
230
|
-
cmax = self.cols - 1
|
231
|
-
go r, cmax
|
232
|
-
end
|
233
|
-
|
234
|
-
def home
|
235
|
-
go 0, 0
|
236
|
-
end
|
237
|
-
|
238
|
-
def crlf
|
239
|
-
r, c = rc
|
240
|
-
go r+1, 0
|
241
|
-
end
|
242
|
-
|
243
|
-
def rc
|
244
|
-
[@win.cury, @win.curx]
|
245
|
-
end
|
246
|
-
|
247
30
|
end
|
data/lib/settings.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
module RubyText
|
2
|
+
def self.set(*args)
|
3
|
+
# Allow a block?
|
4
|
+
standard = [:cbreak, :raw, :echo, :keypad]
|
5
|
+
@flags = [] # FIXME can set/reset individually. hmmm
|
6
|
+
args.each do |arg|
|
7
|
+
if standard.include? arg
|
8
|
+
flag = arg.to_s
|
9
|
+
@flags << arg
|
10
|
+
flag.sub!(/_/, "no")
|
11
|
+
X.send(flag)
|
12
|
+
else
|
13
|
+
@flags << arg
|
14
|
+
case arg
|
15
|
+
when :cursor
|
16
|
+
X.show_cursor
|
17
|
+
when :_cursor, :nocursor
|
18
|
+
X.hide_cursor
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def save_flags
|
25
|
+
@fstack ||= []
|
26
|
+
@fstack.push @flags
|
27
|
+
end
|
28
|
+
|
29
|
+
def rest_flags
|
30
|
+
@flags = @fstack.pop
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.start(*args, log: nil, fg: nil, bg: nil)
|
34
|
+
$debug = File.new(log, "w") if log
|
35
|
+
Object.const_set(:STDSCR, RubyText::Window.main(fg: fg, bg: bg))
|
36
|
+
$stdscr = STDSCR
|
37
|
+
fg, bg, cp = fb2cp(fg, bg)
|
38
|
+
self.set(:_echo, :cbreak, :raw) # defaults
|
39
|
+
# X.stdscr.keypad(true)
|
40
|
+
self.set(*args) # override defaults
|
41
|
+
end
|
42
|
+
|
43
|
+
# For passing through arbitrary method calls
|
44
|
+
# to the lower level...
|
45
|
+
|
46
|
+
def self.method_missing(name, *args)
|
47
|
+
debug "method_missing: #{name} #{args.inspect}"
|
48
|
+
if name[0] == '_'
|
49
|
+
X.send(name[1..-1], *args)
|
50
|
+
else
|
51
|
+
raise "#{name} #{args.inspect}" # NoMethodError
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def RubyText.window(high, wide, r0, c0, border=false, fg: nil, bg: nil)
|
56
|
+
RubyText::Window.new(high, wide, r0, c0, border, fg, bg)
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.hide_cursor
|
60
|
+
X.curs_set(0)
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.show_cursor
|
64
|
+
X.curs_set(1)
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.show_cursor!
|
68
|
+
X.curs_set(2) # Doesn't work?
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
data/lib/version.rb
CHANGED
data/lib/window.rb
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
class RubyText::Window
|
2
|
+
Vert, Horiz = X::A_VERTICAL, X::A_HORIZONTAL
|
3
|
+
|
4
|
+
attr_reader :win, :rows, :cols, :width, :height
|
5
|
+
attr_writer :fg, :bg
|
6
|
+
|
7
|
+
def initialize(high=nil, wide=nil, r0=1, c0=1, border=false, fg=nil, bg=nil)
|
8
|
+
debug "RT::Win.init: #{[high, wide, r0, c0, border]}"
|
9
|
+
@wide, @high, @r0, @c0 = wide, high, r0, c0
|
10
|
+
@border, @fg, @bg = border, fg, bg
|
11
|
+
@win = X::Window.new(high, wide, r0, c0)
|
12
|
+
debug "outer = #{@win.inspect}"
|
13
|
+
debug "@border = #@border"
|
14
|
+
debug "Calling 'colors': #{[@win, fg, bg]}"
|
15
|
+
RubyText::Window.colors!(@win, fg, bg)
|
16
|
+
if @border
|
17
|
+
@win.box(Vert, Horiz)
|
18
|
+
@outer = @win
|
19
|
+
@outer.refresh
|
20
|
+
debug "About to call again: params = #{[high-2, wide-2, r0+1, c0+1]}"
|
21
|
+
@win = X::Window.new(high-2, wide-2, r0+1, c0+1) # , false, fg, bg) # relative now??
|
22
|
+
RubyText::Window.colors!(@win, fg, bg)
|
23
|
+
else
|
24
|
+
@outer = @win
|
25
|
+
end
|
26
|
+
@rows, @cols = @win.maxy, @win.maxx # unnecessary really...
|
27
|
+
@width, @height = @cols + 2, @rows + 2 if @border
|
28
|
+
@win.refresh
|
29
|
+
end
|
30
|
+
def self.colors(win, fg, bg)
|
31
|
+
cfg, cbg, cp = fb2cp(fg, bg)
|
32
|
+
X.init_pair(cp, cfg, cbg)
|
33
|
+
win.color_set(cp|X::A_NORMAL)
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.colors!(win, fg, bg)
|
37
|
+
colors(win, fg, bg)
|
38
|
+
num = win.maxx * win.maxy
|
39
|
+
win.setpos(0, 0)
|
40
|
+
win.addstr(' '*num)
|
41
|
+
win.setpos(0, 0)
|
42
|
+
win.refresh
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.main(fg: nil, bg: nil)
|
46
|
+
@main_win = X.init_screen
|
47
|
+
X.start_color
|
48
|
+
colors!(@main_win, fg, bg)
|
49
|
+
rows, cols = @main_win.maxy, @main_win.maxx
|
50
|
+
@screen = self.make(@main_win, rows, cols, 0, 0, false,
|
51
|
+
fg: fg, bg: bg)
|
52
|
+
# FIXME Why is this hard to inline?
|
53
|
+
# @win = @main_win
|
54
|
+
# obj = self.allocate
|
55
|
+
# obj.instance_eval do
|
56
|
+
# @outer = @win = @main_win
|
57
|
+
# @wide, @high, @r0, @c0 = cols, rows, 0, 0
|
58
|
+
# @fg, @bg = fg, bg
|
59
|
+
# @border = false
|
60
|
+
# @rows, @cols = @high, @wide
|
61
|
+
# @width, @height = @cols + 2, @rows + 2 if @border
|
62
|
+
# end
|
63
|
+
# @win = @main_win # FIXME?
|
64
|
+
# obj
|
65
|
+
@screen
|
66
|
+
end
|
67
|
+
|
68
|
+
def self.make(cwin, high, wide, r0, c0, border, fg: :white, bg: :black)
|
69
|
+
obj = self.allocate
|
70
|
+
obj.instance_eval do
|
71
|
+
debug " Inside instance_eval..."
|
72
|
+
@outer = @win = cwin
|
73
|
+
@wide, @high, @r0, @c0 = wide, high, r0, c0
|
74
|
+
@fg, @bg = fg, bg
|
75
|
+
@border = border
|
76
|
+
@rows, @cols = high, wide
|
77
|
+
@width, @height = @cols + 2, @rows + 2 if @border
|
78
|
+
end
|
79
|
+
obj
|
80
|
+
end
|
81
|
+
|
82
|
+
def fg=(sym)
|
83
|
+
self.colors(@win, fg, @bg)
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.wocka
|
87
|
+
STDSCR.puts "HELLO!!!!!!"
|
88
|
+
sleep 5
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
data/rubytext.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.authors = ["Hal Fulton"]
|
16
16
|
s.email = 'rubyhacker@gmail.com'
|
17
17
|
s.executables << "rubytext"
|
18
|
-
s.add_runtime_dependency 'curses'
|
18
|
+
s.add_runtime_dependency 'curses', ">= 1.2.5"
|
19
19
|
|
20
20
|
# Files...
|
21
21
|
main = Find.find("lib").to_a
|
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.0.
|
4
|
+
version: 0.0.42
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 1.2.5
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.2.5
|
27
27
|
description: Uses the curses gem and extends functionality and ease of use in Ruby.
|
28
28
|
email: rubyhacker@gmail.com
|
29
29
|
executables:
|
@@ -63,9 +63,12 @@ files:
|
|
63
63
|
- examples/slides
|
64
64
|
- lib/keys.rb
|
65
65
|
- lib/menu.rb
|
66
|
+
- lib/navigation.rb
|
66
67
|
- lib/output.rb
|
67
68
|
- lib/rubytext.rb
|
69
|
+
- lib/settings.rb
|
68
70
|
- lib/version.rb
|
71
|
+
- lib/window.rb
|
69
72
|
homepage: https://github.com/Hal9000/rubytext
|
70
73
|
licenses:
|
71
74
|
- Ruby License
|