rubytext 0.0.28 → 0.0.29

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94623e9ab70d1b8cc1d743a018fadfbfc036c57532d8fd15bb53a1b1ad24a200
4
- data.tar.gz: 40c219776d5735a49e03e4362b4212609b7241963b464b69a22fa1747f404cab
3
+ metadata.gz: 3919685b14367cf51dd12193b7e3397fde0843ee965dc7ea202aa8792ff5d973
4
+ data.tar.gz: d8cf125187b359c15e5ad5eda14652ca4e0e64f14d6394eb3dcee93b70fe61de
5
5
  SHA512:
6
- metadata.gz: 34544c7346c4be72e6d1ffb690785eed028f028e901a595f7941e95d9022db5fb4a2f13387e7b01795201d4ba715f974512a3a080772eea12cdfe188f8901309
7
- data.tar.gz: af0380bd45ff5f3503aaccffd9f1d5081d5141fd2e360e921f8e7250b6f1175ee97c450e3bfea44b40aad9c0312f0264ebf4c37ac1f207f656675f73bf8f8a70
6
+ metadata.gz: c5c4118c0b3b8a8827ef56188f77a648e9660fea3f3edef249fa24c4594300637c51b988d7c5329a1cd5fae799a0332f7c4d9659e9e085dfaa99df243166479a
7
+ data.tar.gz: ea7dd88f236d86fbf4308b4bbd8e9ac0f3395ffd796ef4f651ab3993180bee65e29a331863e4dd0bd5b0cc81e77c314773ff83cae495ba429a19d7710409899a
data/bin/rubytext CHANGED
@@ -1,5 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'rubytext'
3
+ require 'rubytext' # Remember: Specify STDOUT as needed!
4
4
 
5
- STDOUT.puts RubyText::Path
5
+ path = RubyText::Path
6
+
7
+ cmd = ARGV.first
8
+
9
+ case cmd
10
+ when nil
11
+ STDOUT.puts "Usage: rubytext [demo|slides]"
12
+ when "demo"
13
+ system("ruby #{path}/../examples/demo.rb")
14
+ when "slides"
15
+ system("#{path}/../examples/slides")
16
+ end
data/examples/demo.rb CHANGED
@@ -2,8 +2,8 @@ $LOAD_PATH.unshift "lib"
2
2
 
3
3
  require 'rubytext'
4
4
 
5
- def delay(sec)
6
- sleep sec/2.0
5
+ def delay(sec, speed=1.0)
6
+ sleep sec/speed
7
7
  end
8
8
 
9
9
  RubyText.start(log: "mylog.txt", fg: :green, bg: :black)
data/examples/prog08.rb CHANGED
@@ -1,14 +1,14 @@
1
- win = RubyText.window(10, 50, 2, 5, true, fg: :yellow, bg: :blue)
1
+ win = RubyText.window(10, 50, 0, 5, true, fg: :yellow, bg: :blue)
2
2
 
3
3
  win.puts "We can use the []= method (0-based)"
4
4
  win.puts "to address individual window locations"
5
- win.puts "and place characters there.\n "
5
+ win.puts "and place characters there. [BUG!]\n "
6
6
 
7
7
  sleep 2
8
8
  win[4,2] = "X"
9
9
 
10
10
  sleep 2
11
- win[6,20] = "y"
11
+ win[8,10] = "y"
12
12
 
13
13
  sleep 2
14
- win[8,8] = "Z"
14
+ win[6,18] = "Z"
data/examples/prog10.rb CHANGED
@@ -1,4 +1,4 @@
1
- win = RubyText.window(6, 30, 2, 5, true, fg: :black, bg: :blue)
1
+ win = RubyText.window(6, 30, 2, 5, true, fg: :yellow, bg: :blue)
2
2
 
3
3
  win.puts "You can write to a window..."
4
4
 
data/examples/prog11.rb CHANGED
@@ -1,4 +1,4 @@
1
- win = RubyText.window(6, 30, 2, 5, true, fg: :black, bg: :blue)
1
+ win = RubyText.window(6, 30, 2, 5, true, fg: :yellow, bg: :blue)
2
2
 
3
3
  win.puts "We default to cbreak mode, so that characters are "
4
4
  win.puts "accepted instantly, but control-C still works."
data/examples/prog12.rb CHANGED
@@ -1,4 +1,4 @@
1
- win = RubyText.window(12, 65, 1, 5, true, fg: :black, bg: :blue)
1
+ win = RubyText.window(12, 65, 1, 5, true, fg: :yellow, bg: :blue)
2
2
 
3
3
  win.output do
4
4
  puts "You can detect the size and cursor position of any window."
@@ -0,0 +1,11 @@
1
+ win = RubyText.window(13, 65, 2, 6, true, fg: :blue, bg: :white)
2
+
3
+ win.puts "The #rcprint method will print at the specified"
4
+ win.puts "row/column, like go(r,c) followed by a print,"
5
+ win.puts "except that it does NOT move the cursor."
6
+
7
+ win.rcprint 4,8, "Simplify,"
8
+ win.rcprint 6,12, "simplify,"
9
+ win.rcprint 8,16, "simplify!"
10
+
11
+ win.rcprint 10,0, "Later there will be other ways to do this kind of thing."
@@ -0,0 +1,14 @@
1
+ win = RubyText.window(11, 65, 1, 6, true, fg: :blue, bg: :white)
2
+
3
+ win.go 2,0
4
+ win.puts " Method #home will home the cursor..."
5
+ win.puts " and #putch will put a character at the current location."
6
+ sleep 2
7
+ win.home; win.putch "H"; sleep 2
8
+ win.rcprint 4,3, "We can also move up/down/left/right..."; sleep 2
9
+
10
+ win.go 7, 29; win.putch("+"); sleep 1
11
+ win.go 7, 29; win.up; win.putch("U"); sleep 1
12
+ win.go 7, 29; win.down; win.putch("D"); sleep 1
13
+ win.go 7, 29; win.left; win.putch("L"); sleep 1
14
+ win.go 7, 29; win.right; win.putch("R"); sleep 1
@@ -0,0 +1,9 @@
1
+ win = RubyText.window(11, 65, 1, 6, true, fg: :blue, bg: :white)
2
+
3
+ win.puts "Methods up/down/left/right can also take an integer..."
4
+
5
+ win.go 4, 29; win.putch("+"); sleep 1
6
+ win.go 4, 29; win.up(2); win.putch("2"); sleep 1
7
+ win.go 4, 29; win.down(3); win.putch("3"); sleep 1
8
+ win.go 4, 29; win.left(4); win.putch("4"); sleep 1
9
+ win.go 4, 29; win.right(5); win.putch("5"); sleep 1
@@ -0,0 +1,11 @@
1
+ win = RubyText.window(11, 65, 1, 6, true, fg: :blue, bg: :white)
2
+
3
+ win.go 2,0
4
+ win.puts "We also have: up!, down!, left!, and right! which can"
5
+ win.puts "Take us to the edges of the window."
6
+
7
+ win.go 5, 21; win.putch("+"); sleep 1
8
+ win.go 5, 21; win.up!; win.putch("U"); sleep 1
9
+ win.go 5, 21; win.down!; win.putch("D"); sleep 1
10
+ win.go 5, 21; win.left!; win.putch("L"); sleep 1
11
+ win.go 5, 21; win.right!; win.putch("R"); sleep 1
@@ -0,0 +1,8 @@
1
+ win = RubyText.window(11, 65, 1, 6, true, fg: :blue, bg: :white)
2
+
3
+ win.go 2,0
4
+ win.puts "#top and #bottom are the same as #up! and #down!"
5
+
6
+ win.go 5, 21; win.putch("+"); sleep 1
7
+ win.go 5, 21; win.top; win.putch("T"); sleep 1
8
+ win.go 5, 21; win.bottom; win.putch("B"); sleep 1
@@ -0,0 +1,10 @@
1
+ win = RubyText.window(15, 65, 1, 6, true, fg: :green, bg: :blue)
2
+
3
+ win.puts "#center will print text centered on the current row"
4
+ win.puts "and do an implicit CRLF at the end.\n "
5
+
6
+ stuff = ["I","can","never","imagine","good sets","of real words",
7
+ "which can somehow", "produce tree shapes", "|", "|"]
8
+
9
+ stuff.each {|str| win.center(str) }
10
+
@@ -0,0 +1,56 @@
1
+ require 'rubytext'
2
+ require 'timeout'
3
+
4
+ def next_slide
5
+ RubyText.hide_cursor
6
+ sleep 2
7
+ Timeout.timeout(999) do
8
+ STDSCR.go @rmax-1, 0
9
+ STDSCR.center "Press any key..."
10
+ getch
11
+ end
12
+ rescue Timeout::Error
13
+ end
14
+
15
+ def show_code(prog)
16
+ text = File.read(prog)
17
+ nlines = text.split("\n").size
18
+
19
+ prog_top = @rmax-nlines-3
20
+ code = RubyText.window(nlines+2, @cmax-2, prog_top, 1,
21
+ true, fg: :green, bg: :black)
22
+ code.puts text
23
+
24
+ STDSCR.go prog_top, 61
25
+ STDSCR.print "[ #{prog} ]"
26
+ STDSCR.go 0,0
27
+ end
28
+
29
+ def check_window
30
+ if @rmax < 25 || @cmax < 80
31
+ puts "\n Your window should be 25x80 or larger,"
32
+ puts " but this one is only #{rmax}x#{cmax}."
33
+ puts " Please resize and run again!"
34
+ getch
35
+ exit 1
36
+ end
37
+ end
38
+
39
+ #### Main
40
+
41
+ RubyText.start(:cbreak, log: "showme.log", fg: :white, bg: :black)
42
+
43
+ @cmax = STDSCR.cols
44
+ @rmax = STDSCR.rows
45
+
46
+ RubyText.hide_cursor
47
+
48
+ check_window
49
+
50
+ prog = ARGV.first
51
+
52
+ show_code(prog)
53
+
54
+ require_relative prog
55
+
56
+ next_slide
data/examples/slides CHANGED
@@ -3,15 +3,13 @@
3
3
  rc = system("ruby examples/check.rb")
4
4
  exit unless rc
5
5
 
6
- system("ruby showme.rb examples/prog01.rb")
7
- system("ruby showme.rb examples/prog02.rb")
8
- system("ruby showme.rb examples/prog03.rb")
9
- system("ruby showme.rb examples/prog04.rb")
10
- system("ruby showme.rb examples/prog05.rb")
11
- system("ruby showme.rb examples/prog06.rb")
12
- system("ruby showme.rb examples/prog07.rb")
13
- system("ruby showme.rb examples/prog08.rb")
14
- system("ruby showme.rb examples/prog09.rb")
15
- system("ruby showme.rb examples/prog10.rb")
16
- #system("ruby showme.rb examples/prog11.rb")
17
- system("ruby showme.rb examples/prog12.rb")
6
+ # FIXME
7
+ # - use names instead of numbers?
8
+ # - convert rt-show into a method?
9
+
10
+ 1.upto(19) do |n|
11
+ num = '%02d' % n
12
+ prog = "examples/prog#{num}.rb"
13
+ system("ruby examples/showme.rb #{prog}")
14
+ end
15
+
data/lib/rubytext.rb CHANGED
@@ -73,7 +73,6 @@ module RubyText
73
73
 
74
74
  def self.main(fg: nil, bg: nil)
75
75
  @main_win = X.init_screen
76
- debug(@main_win.inspect)
77
76
  X.start_color
78
77
  colors!(@main_win, fg, bg)
79
78
  rows, cols = @main_win.maxy, @main_win.maxx
@@ -192,9 +191,16 @@ class RubyText::Window
192
191
  @win.refresh
193
192
  end
194
193
 
195
- def center(row, str)
194
+ def center(str)
195
+ r, c = self.rc
196
196
  n = @win.maxx - str.length
197
- rcprint row, n/2, str
197
+ go r, n/2
198
+ puts str
199
+ end
200
+
201
+ def putch(ch)
202
+ r, c = self.rc
203
+ self[r, c] = ch[0]
198
204
  end
199
205
 
200
206
  def delegate_output(sym, *args)
@@ -247,9 +253,58 @@ debug "delegate: colors are #@fg, #@bg"
247
253
  end
248
254
  end
249
255
 
250
- def down
256
+ def up(n=1)
257
+ r, c = rc
258
+ go r-n, c
259
+ end
260
+
261
+ def down(n=1)
262
+ r, c = rc
263
+ go r+n, c
264
+ end
265
+
266
+ def left(n=1)
251
267
  r, c = rc
252
- go r+1, c
268
+ go r, c-n
269
+ end
270
+
271
+ def right(n=1)
272
+ r, c = rc
273
+ go r, c+n
274
+ end
275
+
276
+ def top
277
+ r, c = rc
278
+ go 0, c
279
+ end
280
+
281
+ def bottom
282
+ r, c = rc
283
+ rmax = self.rows - 1
284
+ go rmax, c
285
+ end
286
+
287
+ def up!
288
+ top
289
+ end
290
+
291
+ def down!
292
+ bottom
293
+ end
294
+
295
+ def left!
296
+ r, c = rc
297
+ go r, 0
298
+ end
299
+
300
+ def right!
301
+ r, c = rc
302
+ cmax = self.cols - 1
303
+ go r, cmax
304
+ end
305
+
306
+ def home
307
+ go 0, 0
253
308
  end
254
309
 
255
310
  def crlf
@@ -295,7 +350,7 @@ debug "delegate: colors are #@fg, #@bg"
295
350
 
296
351
  def []=(r, c, char)
297
352
  @win.setpos(r, c)
298
- @win.addstr(char[0])
353
+ @win.addch(char[0])
299
354
  @win.refresh
300
355
  end
301
356
 
@@ -315,7 +370,6 @@ end
315
370
  ### Stick stuff into Kernel for top level
316
371
 
317
372
  module Kernel
318
- # private
319
373
  def puts(*args) # Doesn't affect STDOUT.puts, etc.
320
374
  $stdscr.puts(*args)
321
375
  end
data/lib/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  module RubyText
3
- VERSION = "0.0.28"
3
+ VERSION = "0.0.29"
4
4
 
5
5
  Path = File.expand_path(File.join(File.dirname(__FILE__)))
6
6
  end
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.28
4
+ version: 0.0.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
@@ -51,6 +51,13 @@ files:
51
51
  - examples/prog11.rb
52
52
  - examples/prog12.rb
53
53
  - examples/prog13.rb
54
+ - examples/prog14.rb
55
+ - examples/prog15.rb
56
+ - examples/prog16.rb
57
+ - examples/prog17.rb
58
+ - examples/prog18.rb
59
+ - examples/prog19.rb
60
+ - examples/showme.rb
54
61
  - examples/slides
55
62
  - lib/rubytext.rb
56
63
  - lib/version.rb