rubytext 0.0.73 → 0.0.74
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/prog10.rb +3 -3
- data/examples/prog20.rb +8 -8
- data/examples/prog20a.rb +18 -0
- data/lib/effects.rb +15 -2
- data/lib/menu.rb +4 -4
- data/lib/output.rb +19 -7
- data/lib/settings.rb +7 -6
- data/lib/version.rb +1 -1
- data/lib/window.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a79401a742e0dee3f3fe1e2a75c477ea819b4cb00aa76deba471de0a26fdb0fb
|
4
|
+
data.tar.gz: 67f72468b5ca76116d45f872a8d6626e768c9d66301c20a18bd0a62b497836a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d28d84e40b096a6e71dc9461ba41d55b97246d8ffd90f2dcc1a090c2d69cb7928380ebca87d50695a7a6ee556162f59be7761dd058cfbba5d257c3bc5faa525b
|
7
|
+
data.tar.gz: 1ee6a3d4fcae0e801b7d5dfd2c2891bace25bc0cbfad4e2489de66fb50c73fb44f8f90137c1aec071d379691e23c73eb438d86a866d7b0c71d9763770f210f32
|
data/examples/prog10.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
win = RubyText.window(6, 30,
|
1
|
+
win = RubyText.window(6, 30, 3, 13, fg: Yellow, bg: Blue)
|
2
2
|
|
3
3
|
win.puts "You can write to a window..."
|
4
4
|
|
5
5
|
sleep 2
|
6
|
-
|
6
|
+
11.times { STDSCR.puts }
|
7
7
|
STDSCR.puts "...or you can write to STDSCR (standard screen)"
|
8
8
|
|
9
9
|
sleep 1
|
10
10
|
puts "STDSCR is the default receiver."
|
11
11
|
|
12
12
|
sleep 2
|
13
|
-
STDSCR.go
|
13
|
+
STDSCR.go 6, 0
|
14
14
|
puts "Nothing stops you from overwriting a window."
|
15
15
|
|
data/examples/prog20.rb
CHANGED
@@ -8,11 +8,11 @@ win = RubyText.window(9, 65, 2, 26, fg: fg, bg: bg)
|
|
8
8
|
win.puts "This is EXPERIMENTAL (and BUGGY)."
|
9
9
|
win.puts "Use an \"effect\" to change the text color or \"look\":"
|
10
10
|
|
11
|
-
win.puts "This is", effect(
|
12
|
-
effect(
|
13
|
-
win.puts "We can ", effect(
|
14
|
-
"and ", effect(
|
15
|
-
"and ", effect(
|
16
|
-
effect(
|
17
|
-
win.puts "This is ", effect(
|
18
|
-
effect(
|
11
|
+
win.puts "This is", effect(Yellow), " another color ",
|
12
|
+
effect(White), "and yet another."
|
13
|
+
win.puts "We can ", effect(:bold), "boldface ",
|
14
|
+
"and ", effect(:reverse), "reverse ",
|
15
|
+
"and ", effect(:under), "underline ",
|
16
|
+
effect(:normal), "text at will.\n "
|
17
|
+
win.puts "This is ", effect(:bold, Red), "bold red ",
|
18
|
+
effect(:normal, fg), "and this is normal again.\n "
|
data/examples/prog20a.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
def effect(*args) # find better way
|
2
|
+
RubyText::Effects.new(*args)
|
3
|
+
end
|
4
|
+
|
5
|
+
fg, bg = White, Blue
|
6
|
+
win = RubyText.window(9, 65, 2, 26, fg: fg, bg: bg)
|
7
|
+
|
8
|
+
win.puts "This is EXPERIMENTAL (and BUGGY)."
|
9
|
+
win.puts "Use an \"effect\" to change the text color or \"look\":"
|
10
|
+
|
11
|
+
win.puts "This is", fx(" another color ", Yellow),
|
12
|
+
effect(White), "and yet another."
|
13
|
+
win.puts "We can ", effect(:bold), "boldface ",
|
14
|
+
"and ", effect(:reverse), "reverse ",
|
15
|
+
"and ", effect(:under), "underline ",
|
16
|
+
effect(:normal), "text at will.\n "
|
17
|
+
win.puts "This is ", effect(:bold, Red), "bold red ",
|
18
|
+
effect(:normal, fg), "and this is normal again.\n "
|
data/lib/effects.rb
CHANGED
@@ -1,15 +1,22 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
def fx(str, *args)
|
4
|
+
eff = RubyText::Effects.new(*args)
|
5
|
+
str.define_singleton_method(:effect) { eff }
|
6
|
+
str # must return str
|
7
|
+
end
|
8
|
+
|
1
9
|
class RubyText::Effects # dumb name?
|
2
10
|
Modes = {bold: X::A_BOLD,
|
3
11
|
normal: X::A_NORMAL,
|
4
12
|
reverse: X::A_REVERSE,
|
5
13
|
under: X::A_UNDERLINE}
|
6
14
|
|
7
|
-
|
8
15
|
Others = %[:show, :hide] # show/hide cursor; more later??
|
9
16
|
|
10
17
|
attr_reader :value, :fg
|
11
18
|
|
12
|
-
def initialize(
|
19
|
+
def initialize(*args)
|
13
20
|
bits = 0
|
14
21
|
@list = args
|
15
22
|
args.each do |arg|
|
@@ -22,5 +29,11 @@ class RubyText::Effects # dumb name?
|
|
22
29
|
end
|
23
30
|
@value = bits
|
24
31
|
end
|
32
|
+
|
33
|
+
def set(win)
|
34
|
+
attr, fg = self.value, self.fg
|
35
|
+
win.cwin.attron(attr)
|
36
|
+
win.set_colors(fg, win.bg) if fg
|
37
|
+
end
|
25
38
|
end
|
26
39
|
|
data/lib/menu.rb
CHANGED
@@ -31,8 +31,8 @@ module RubyText
|
|
31
31
|
RubyText.hide_cursor
|
32
32
|
sel = curr
|
33
33
|
max = items.size - 1
|
34
|
-
norm = RubyText::Effects.new(
|
35
|
-
rev = RubyText::Effects.new(
|
34
|
+
norm = RubyText::Effects.new(:normal)
|
35
|
+
rev = RubyText::Effects.new(:reverse)
|
36
36
|
loop do
|
37
37
|
items.each.with_index do |item, row|
|
38
38
|
win.go row, 0
|
@@ -67,8 +67,8 @@ module RubyText
|
|
67
67
|
# RubyText.set(:raw)
|
68
68
|
X.stdscr.keypad(true)
|
69
69
|
RubyText.hide_cursor
|
70
|
-
norm = RubyText::Effects.new(
|
71
|
-
rev = RubyText::Effects.new(
|
70
|
+
norm = RubyText::Effects.new(:normal)
|
71
|
+
rev = RubyText::Effects.new(:reverse)
|
72
72
|
sel = 0
|
73
73
|
max = items.size - 1
|
74
74
|
send(handler, sel, items[sel], win2)
|
data/lib/output.rb
CHANGED
@@ -8,7 +8,7 @@ class RubyText::Window
|
|
8
8
|
self.puts str
|
9
9
|
end
|
10
10
|
|
11
|
-
def putch(ch)
|
11
|
+
def putch(ch) # move to WindowIO?
|
12
12
|
r, c = self.rc
|
13
13
|
self[r, c] = ch[0]
|
14
14
|
end
|
@@ -32,13 +32,11 @@ class RubyText::Window
|
|
32
32
|
end
|
33
33
|
args.each do |arg|
|
34
34
|
if arg.is_a?(RubyText::Effects)
|
35
|
-
|
36
|
-
self.cwin.attron(attr)
|
37
|
-
self.set_colors(fg, @bg) if fg
|
35
|
+
arg.set(self)
|
38
36
|
elsif arg.respond_to? :effect
|
39
|
-
|
40
|
-
|
41
|
-
|
37
|
+
arg.effect.set(self)
|
38
|
+
arg.each_char {|ch| ch == "\n" ? crlf : @cwin.addch(ch) }
|
39
|
+
@cwin.refresh
|
42
40
|
else
|
43
41
|
arg.each_char {|ch| ch == "\n" ? crlf : @cwin.addch(ch) }
|
44
42
|
@cwin.refresh
|
@@ -155,5 +153,19 @@ module WindowIO
|
|
155
153
|
def getch
|
156
154
|
X.getch
|
157
155
|
end
|
156
|
+
|
157
|
+
def gets # still needs improvement
|
158
|
+
str = ""
|
159
|
+
loop do
|
160
|
+
ch = ::STDSCR.getch
|
161
|
+
if ch == 10
|
162
|
+
::STDSCR.crlf
|
163
|
+
break
|
164
|
+
end
|
165
|
+
str << ch
|
166
|
+
end
|
167
|
+
str
|
168
|
+
end
|
169
|
+
|
158
170
|
end
|
159
171
|
|
data/lib/settings.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
module RubyText
|
2
2
|
# Hmm, all these are module-level.
|
3
3
|
|
4
|
-
def self.start(*args, log:
|
5
|
-
|
4
|
+
def self.start(*args, log: "/tmp/rubytext.log",
|
5
|
+
fg: White, bg: Blue, scroll: false)
|
6
|
+
$debug ||= File.new(log, "w") if log # FIXME remove global
|
6
7
|
main = RubyText::Window.main(fg: fg, bg: bg, scroll: scroll)
|
7
8
|
Object.const_set(:STDSCR, main) unless defined? STDSCR
|
8
|
-
$stdscr = STDSCR
|
9
|
+
$stdscr = STDSCR # FIXME global needed?
|
9
10
|
Object.include(WindowIO)
|
10
|
-
self.set(:_echo, :cbreak) # defaults
|
11
|
-
self.set(*args)
|
11
|
+
self.set(:_echo, :cbreak) # defaults (:keypad?)
|
12
|
+
self.set(*args) # override defaults
|
12
13
|
rescue => err
|
13
14
|
debug(err.inspect)
|
14
15
|
debug(err.backtrace)
|
@@ -33,7 +34,7 @@ module RubyText
|
|
33
34
|
|
34
35
|
def self.set(*args) # Allow a block?
|
35
36
|
standard = [:cbreak, :raw, :echo, :keypad]
|
36
|
-
@defaults = [:cbreak, :
|
37
|
+
@defaults = [:cbreak, :_echo, :keypad]
|
37
38
|
@flags = @defaults.dup
|
38
39
|
save_flags
|
39
40
|
args.each do |arg|
|
data/lib/version.rb
CHANGED
data/lib/window.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.74
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- examples/prog18.rb
|
66
66
|
- examples/prog19.rb
|
67
67
|
- examples/prog20.rb
|
68
|
+
- examples/prog20a.rb
|
68
69
|
- examples/prog21.rb
|
69
70
|
- examples/prog22.rb
|
70
71
|
- examples/showme.rb
|