rubytext 0.0.19 → 0.0.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/rubytext.rb +56 -34
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 01d2a45364981d0139df502a40e86e0b3cbd1186bae314e1f987dc704ba0c5cc
|
4
|
+
data.tar.gz: bab37c6c328abe1d33fd75c8a8f2c0e2a691a211f6f272d334802b5e4a219486
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6cb6a7992dfc787cceffcef1036ec5678fddde72ea2ec22cbeef9e00e1fc01bb36ac9ae81c17102bb31ca948a5b7f0fe5d00e433dcf10faf9d18850c65d1160c
|
7
|
+
data.tar.gz: 39f142d6bc3136ff4bfefa80926753ffdec548a522b4a6d0ac363de83ca2417425ee53d7416e53a9ae3748b6247529acff52dc09663205b83dec74b3739026ee
|
data/lib/rubytext.rb
CHANGED
@@ -11,17 +11,27 @@ def debug(*args)
|
|
11
11
|
$debug.puts *args
|
12
12
|
end
|
13
13
|
|
14
|
+
def fb2cp(fg, bg)
|
15
|
+
debug "Colors are: #{fg} on #{bg}"
|
16
|
+
fg = X.const_get("COLOR_#{fg.upcase}")
|
17
|
+
bg = X.const_get("COLOR_#{bg.upcase}")
|
18
|
+
debug "Curses colors are: #{fg} on #{bg}"
|
19
|
+
cp = $ColorPairs[[fg, bg]]
|
20
|
+
debug "cp is: #{cp}"
|
21
|
+
[fg, bg, cp]
|
22
|
+
end
|
23
|
+
|
14
24
|
module RubyText
|
15
25
|
|
16
26
|
Colors = %w[black blue cyan green magenta red white yellow]
|
17
|
-
ColorPairs = {}
|
27
|
+
$ColorPairs = {}
|
18
28
|
num = 0
|
19
29
|
Colors.each do |fc|
|
20
30
|
Colors.each do |bc|
|
21
31
|
fg = X.const_get("COLOR_#{fc.upcase}")
|
22
32
|
bg = X.const_get("COLOR_#{bc.upcase}")
|
23
33
|
X.init_pair(num+=1, fg, bg) # FIXME backwards?
|
24
|
-
ColorPairs[[fg, bg]] = num
|
34
|
+
$ColorPairs[[fg, bg]] = num
|
25
35
|
end
|
26
36
|
end
|
27
37
|
|
@@ -46,20 +56,22 @@ module RubyText
|
|
46
56
|
end
|
47
57
|
|
48
58
|
class Window
|
49
|
-
def self.main
|
50
|
-
debug "Entering Window.main"
|
59
|
+
def self.main(fg: nil, bg: nil)
|
60
|
+
debug "Entering Window.main (#{fg}, #{bg}) => "
|
61
|
+
fg, bg, cp = fb2cp(fg, bg)
|
62
|
+
debug " computed #{fg}, #{bg}, #{cp}"
|
63
|
+
debug " cp|A_NORMAL = #{cp|X::A_NORMAL}"
|
51
64
|
@main_win = X.init_screen
|
52
65
|
X.start_color
|
53
|
-
|
54
|
-
# X.stdscr.bkgd(X.color_pair(1)|X::A_NORMAL)
|
66
|
+
X.stdscr.bkgd(cp|X::A_NORMAL)
|
55
67
|
rows, cols = @main_win.maxy, @main_win.maxx
|
56
68
|
debug "About to call .make"
|
57
|
-
@screen = self.make(@main_win, rows, cols, 0, 0, false
|
69
|
+
@screen = self.make(@main_win, rows, cols, 0, 0, false)
|
58
70
|
@screen
|
59
71
|
end
|
60
72
|
|
61
|
-
def self.make(cwin, high, wide, r0, c0, border
|
62
|
-
debug "make: #{[cwin, high, wide, r0, c0, border
|
73
|
+
def self.make(cwin, high, wide, r0, c0, border)
|
74
|
+
debug "make: #{[cwin, high, wide, r0, c0, border]}"
|
63
75
|
obj = self.allocate
|
64
76
|
debug "Allocate returned a #{obj.class}"
|
65
77
|
obj.instance_eval do
|
@@ -77,42 +89,36 @@ end
|
|
77
89
|
|
78
90
|
# debug "Setting STDSCR to Window.main"
|
79
91
|
|
80
|
-
STDSCR = RubyText::Window.main
|
81
|
-
$stdscr = STDSCR
|
92
|
+
# STDSCR = RubyText::Window.main
|
93
|
+
# $stdscr = STDSCR
|
82
94
|
|
83
|
-
|
84
|
-
|
85
|
-
|
95
|
+
=begin
|
96
|
+
Logic flow -
|
97
|
+
main
|
98
|
+
initscreen
|
99
|
+
start_color
|
100
|
+
make
|
101
|
+
STDSCR = RubyText::Window.main
|
102
|
+
$stdscr = STDSCR
|
86
103
|
|
87
|
-
|
88
|
-
# to the lower level...
|
104
|
+
=end
|
89
105
|
|
90
|
-
|
91
|
-
debug "method_missing: #{name} #{args.inspect}"
|
92
|
-
if name[0] == '_'
|
93
|
-
X.send(name[1..-1], *args)
|
94
|
-
else
|
95
|
-
raise "#{name} #{args.inspect}" # NoMethodError
|
96
|
-
end
|
97
|
-
end
|
106
|
+
###
|
98
107
|
|
99
|
-
|
100
|
-
RubyText::Window.new(high, wide, r0, c0, border, fg, bg)
|
101
|
-
end
|
108
|
+
module RubyText
|
102
109
|
|
103
110
|
def self.start(*args, log: nil, fg: nil, bg: nil)
|
104
111
|
$debug = File.new(log, "w") if log
|
112
|
+
Object.const_set(:STDSCR, RubyText::Window.main(fg: fg, bg: bg))
|
113
|
+
$stdscr = STDSCR
|
114
|
+
|
105
115
|
fg ||= :white
|
106
116
|
bg ||= :black
|
107
117
|
debug "fg = #{fg} is not a valid color" unless Colors.include?(fg.to_s)
|
108
118
|
debug "bg = #{bg} is not a valid color" unless Colors.include?(bg.to_s)
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
debug "Curses colors are: #{fg} on #{bg}"
|
113
|
-
cp = ColorPairs[[fg, bg]]
|
114
|
-
debug "cp is: #{cp}"
|
115
|
-
X.stdscr.bkgd(cp|X::A_NORMAL)
|
119
|
+
fg, bg, cp = fb2cp(fg, bg)
|
120
|
+
# X.bkgd(cp|X::A_NORMAL)
|
121
|
+
# X.clear
|
116
122
|
X.noecho
|
117
123
|
X.stdscr.keypad(true)
|
118
124
|
X.cbreak # by default
|
@@ -131,6 +137,22 @@ debug "cp is: #{cp}"
|
|
131
137
|
end
|
132
138
|
end
|
133
139
|
|
140
|
+
# For passing through arbitrary method calls
|
141
|
+
# to the lower level...
|
142
|
+
|
143
|
+
def self.method_missing(name, *args)
|
144
|
+
debug "method_missing: #{name} #{args.inspect}"
|
145
|
+
if name[0] == '_'
|
146
|
+
X.send(name[1..-1], *args)
|
147
|
+
else
|
148
|
+
raise "#{name} #{args.inspect}" # NoMethodError
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def RubyText.window(high, wide, r0, c0, border=false, fg=nil, bg=nil)
|
153
|
+
RubyText::Window.new(high, wide, r0, c0, border, fg, bg)
|
154
|
+
end
|
155
|
+
|
134
156
|
def self.hide_cursor
|
135
157
|
X.curs_set(0)
|
136
158
|
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
@@ -54,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
54
54
|
version: '0'
|
55
55
|
requirements: []
|
56
56
|
rubyforge_project:
|
57
|
-
rubygems_version: 2.
|
57
|
+
rubygems_version: 2.7.7
|
58
58
|
signing_key:
|
59
59
|
specification_version: 4
|
60
60
|
summary: A thick wrapper for Curses
|