typr 1.2.0 → 1.4.0
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/CHANGELOG.md +28 -0
- data/README.md +64 -33
- data/lib/browser.rb +80 -53
- data/lib/graphical.rb +1 -1
- data/lib/grid.rb +8 -1
- data/lib/line.rb +4 -2
- data/lib/space.rb +11 -0
- data/lib/stack.rb +35 -3
- data/lib/terminal.rb +174 -49
- data/lib/text.rb +7 -0
- data/lib/typr.rb +3 -3
- data/share/terminfo +691 -0
- data/typr.gemspec +4 -3
- metadata +2 -2
- data/lib/curses.rb +0 -124
data/typr.gemspec
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = "typr"
|
|
5
|
-
s.version = "1.
|
|
5
|
+
s.version = "1.4.0"
|
|
6
6
|
s.date = "2026-07-25"
|
|
7
7
|
s.homepage = "https://codeberg.org/typr/typr"
|
|
8
8
|
s.licenses = ["MIT"]
|
|
@@ -10,8 +10,9 @@ Gem::Specification.new do |s|
|
|
|
10
10
|
s.authors = ["Kilian Reitmayr"]
|
|
11
11
|
s.summary = "Terminal UI Toolkit"
|
|
12
12
|
s.email = ["reitmayr@protonmail.com"]
|
|
13
|
-
s.files = Dir["lib/*.rb"] + ["LICENSE", "README.md", "CHANGELOG.md", "typr.gemspec",
|
|
14
|
-
"example/grid", "example/browser", "example/text", "example/top500.csv",
|
|
13
|
+
s.files = Dir["lib/*.rb"] - ["lib/curses.rb"] + ["LICENSE", "README.md", "CHANGELOG.md", "typr.gemspec",
|
|
14
|
+
"example/grid", "example/browser", "example/text", "example/top500.csv",
|
|
15
|
+
"share/mimetypes", "share/terminfo"]
|
|
15
16
|
s.required_ruby_version = Gem::Requirement.new(">= 3.1")
|
|
16
17
|
s.add_runtime_dependency("unicode-display_width", ["~> 3.1"])
|
|
17
18
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: typr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kilian Reitmayr
|
|
@@ -37,7 +37,6 @@ files:
|
|
|
37
37
|
- example/text
|
|
38
38
|
- example/top500.csv
|
|
39
39
|
- lib/browser.rb
|
|
40
|
-
- lib/curses.rb
|
|
41
40
|
- lib/frontend.rb
|
|
42
41
|
- lib/graphical.rb
|
|
43
42
|
- lib/grid.rb
|
|
@@ -48,6 +47,7 @@ files:
|
|
|
48
47
|
- lib/text.rb
|
|
49
48
|
- lib/typr.rb
|
|
50
49
|
- share/mimetypes
|
|
50
|
+
- share/terminfo
|
|
51
51
|
- typr.gemspec
|
|
52
52
|
homepage: https://codeberg.org/typr/typr
|
|
53
53
|
licenses:
|
data/lib/curses.rb
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
require 'ncursesw'
|
|
2
|
-
require_relative 'frontend'
|
|
3
|
-
|
|
4
|
-
module Visuals
|
|
5
|
-
|
|
6
|
-
include Ncurses
|
|
7
|
-
KEY_ESCAPE = 27
|
|
8
|
-
KEY_RETURN = 10
|
|
9
|
-
KEY_TAB = 9
|
|
10
|
-
KEY_PAGEDOWN = KEY_NPAGE
|
|
11
|
-
KEY_PAGEUP = KEY_PPAGE
|
|
12
|
-
|
|
13
|
-
$colors = COLORS.keys
|
|
14
|
-
$pairs = []
|
|
15
|
-
|
|
16
|
-
%w[color pair].each{ |name| method = <<STR
|
|
17
|
-
def %s_for obj;
|
|
18
|
-
if id = $%ss.index( obj ) then return id
|
|
19
|
-
else last = ( $%ss << obj.dup ).count - 1
|
|
20
|
-
Ncurses.init_%s( last, *obj )
|
|
21
|
-
return last
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
STR
|
|
25
|
-
eval( method % ([name]*4) )
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
def self.width; Ncurses.COLS end
|
|
29
|
-
def self.height; Ncurses.LINES end
|
|
30
|
-
def self.row; Ncurses.getcury $screen end
|
|
31
|
-
def self.column; Ncurses.getcurx $screen end
|
|
32
|
-
|
|
33
|
-
def self.exit
|
|
34
|
-
Ncurses.echo
|
|
35
|
-
Ncurses.nocbreak
|
|
36
|
-
Ncurses.nl
|
|
37
|
-
Ncurses.endwin
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def read input
|
|
41
|
-
case input
|
|
42
|
-
when :key
|
|
43
|
-
key = Ncurses.getch
|
|
44
|
-
key = key.chr if key.between? 32, 126
|
|
45
|
-
return key
|
|
46
|
-
when :line
|
|
47
|
-
str = ''
|
|
48
|
-
until (key = Ncurses.getch) == KEY_RETURN
|
|
49
|
-
return nil if key == KEY_ESCAPE
|
|
50
|
-
if [KEY_BACKSPACE, 127, 8].include? key
|
|
51
|
-
str.chop!
|
|
52
|
-
else
|
|
53
|
-
str << key.chr if key.between? 32, 126
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
return str
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def move x=0,y=0; Ncurses.move y, x end
|
|
61
|
-
def refresh; Ncurses.refresh end
|
|
62
|
-
def clear type=:screen;
|
|
63
|
-
case type
|
|
64
|
-
when :screen; Ncurses.erase
|
|
65
|
-
when :line; Ncurses.clrtoeol
|
|
66
|
-
when :down; Ncurses.clrtobot
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
def change; Ncurses.color_set pair_for( $color ), 0 end
|
|
70
|
-
def draw string; Ncurses.addstr string.to_s end
|
|
71
|
-
|
|
72
|
-
def get_background; $color[1] end
|
|
73
|
-
def get_foreground; $color[0] end
|
|
74
|
-
def background color;
|
|
75
|
-
$color[1] = (color ? color_for( color ) : $default[1]); change
|
|
76
|
-
end
|
|
77
|
-
def foreground color;
|
|
78
|
-
$color[0] = (color ? color_for( color ) : $default[0]); change
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def color c
|
|
82
|
-
c = [c] unless c.is_a? Array and c.count == 2
|
|
83
|
-
foreground c[0] if c[0]
|
|
84
|
-
background c[1] if c[1]
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def self.init args={}
|
|
88
|
-
$creen = Ncurses.initscr
|
|
89
|
-
Ncurses.cbreak
|
|
90
|
-
Ncurses.noecho
|
|
91
|
-
Ncurses.nl
|
|
92
|
-
Ncurses.curs_set 0
|
|
93
|
-
Ncurses.start_color
|
|
94
|
-
Ncurses.stdscr.intrflush(false)
|
|
95
|
-
Ncurses.stdscr.keypad(true)
|
|
96
|
-
|
|
97
|
-
$default = [
|
|
98
|
-
color_for( args[:foreground] || :grey80 ),
|
|
99
|
-
color_for( args[:background] || :grey10 ) ]
|
|
100
|
-
$color = $default.dup
|
|
101
|
-
|
|
102
|
-
COLORS.each_with_index{ |c,i|
|
|
103
|
-
$pairs << [ i, $default[1] ]
|
|
104
|
-
Ncurses.init_color i, *c[1]
|
|
105
|
-
Ncurses.init_pair i, i, $default[1] }
|
|
106
|
-
|
|
107
|
-
Ncurses.bkgd Ncurses::COLOR_PAIR( pair_for $default )
|
|
108
|
-
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
if __FILE__ == $0
|
|
114
|
-
include Visuals
|
|
115
|
-
Visuals.init
|
|
116
|
-
characters = (32..126).map(&:chr).join
|
|
117
|
-
loop do
|
|
118
|
-
clear
|
|
119
|
-
$colors.each_with_index{ |c,i|
|
|
120
|
-
foreground c; move 0,i; draw characters }
|
|
121
|
-
refresh
|
|
122
|
-
exit if read(:key) == KEY_ESCAPE
|
|
123
|
-
end
|
|
124
|
-
end
|