kittikrb-cursor 0.1.0 → 3.0.1
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 +8 -8
- data/kittikrb-cursor.gemspec +2 -2
- data/lib/kittikrb/cursor.rb +147 -3
- data/lib/kittikrb/cursor/core_patches/hash.rb +20 -0
- data/lib/kittikrb/cursor/version.rb +1 -1
- metadata +5 -5
- data/lib/kittikrb/cursor/core_ext/hash.rb +0 -7
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MmFlMDllM2FjZDMyMDhkZjE2ZGNmMjdlNTY2YWVlNTY4NDNiMDNmNg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MmUyMTIzNGJhYjZiYzdjYTQ3ODQ1NGIzZjExMWZjZjg0NTJhODg4Yg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmMwYTFjMmIyZTcwMjI4MWQxMDM0NDM5YjY5Yjk3YmMyNjkyNDVmNzhlMjQz
|
10
|
+
YWRiZmZjMGUyY2UzMTRlZDc5ZDczMzg1ZjMzZDVlNmZmYTE5YmUwNjljZDIz
|
11
|
+
ZDI3ZjIxYjZjOWJmODM5MzUyMjBjZDZkZGViNmJiNDA4YzNmNzQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZTE4NDAyMDU5YjMxZWExZjgyMmY2YzJkYWI5MmYxNDk0ZWZhY2ZmNGI0NGUy
|
14
|
+
MjBkODAyNThkOWE1YTFmNzJiMGQ3Y2RmMGNjN2Q3ZmYyZWZhMWU5MGExZjYx
|
15
|
+
OTNmNmVhYjM1ODQ3OTk1ZmVmYjY4ZDEwNGZkOTYyZGZkODczNjE=
|
data/kittikrb-cursor.gemspec
CHANGED
@@ -10,10 +10,10 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.authors = ['Vladyslav Siriniok']
|
11
11
|
spec.email = ['siriniok@gmail.com']
|
12
12
|
spec.license = 'MIT'
|
13
|
-
spec.summary = %q{ Low-level API for cursor in terminal.
|
13
|
+
spec.summary = %q{ Low-level API for cursor in terminal. }
|
14
14
|
spec.description = %q{ Implements low-level API for access to cursor in
|
15
15
|
terminal.' }
|
16
|
-
spec.homepage = 'https://github.com/
|
16
|
+
spec.homepage = 'https://github.com/kittikrb/cursor'
|
17
17
|
spec.required_ruby_version = '~> 2.2'
|
18
18
|
spec.required_rubygems_version = '~> 2.2'
|
19
19
|
|
data/lib/kittikrb/cursor.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'kittikrb/cursor/
|
1
|
+
require 'kittikrb/cursor/core_patches/hash'
|
2
2
|
|
3
3
|
require 'kittikrb/cursor/version'
|
4
4
|
require 'kittikrb/cursor/colors'
|
@@ -17,6 +17,7 @@ require 'io/console'
|
|
17
17
|
|
18
18
|
module KittikRb
|
19
19
|
module Cursor
|
20
|
+
using CorePatches::HashPatch
|
20
21
|
|
21
22
|
def self.create
|
22
23
|
Cursor.new
|
@@ -36,7 +37,6 @@ module KittikRb
|
|
36
37
|
}
|
37
38
|
ESCAPE_CHAR = "\e"
|
38
39
|
|
39
|
-
# Only for compatibility with KittikJs API
|
40
40
|
def self.encode_to_vt100(str)
|
41
41
|
ESCAPE_CHAR + str
|
42
42
|
end
|
@@ -89,7 +89,7 @@ module KittikRb
|
|
89
89
|
|
90
90
|
# Get index of the buffer from (x, y) coordinates.
|
91
91
|
def get_pointer_from_xy(x = @x, y = @y)
|
92
|
-
y * @width + x
|
92
|
+
y * @width + x
|
93
93
|
end
|
94
94
|
|
95
95
|
# Get (x, y) coordinate from the buffer pointer.
|
@@ -103,6 +103,150 @@ module KittikRb
|
|
103
103
|
self
|
104
104
|
end
|
105
105
|
|
106
|
+
def move_by(x, y)
|
107
|
+
x > 0 ? right(x) : left(x.abs)
|
108
|
+
y > 0 ? down(y) : up(y.abs)
|
109
|
+
|
110
|
+
self
|
111
|
+
end
|
112
|
+
|
113
|
+
def up(y = 1)
|
114
|
+
@y -= y.floor
|
115
|
+
|
116
|
+
self
|
117
|
+
end
|
118
|
+
|
119
|
+
def down(y = 1)
|
120
|
+
@y += y.floor
|
121
|
+
|
122
|
+
self
|
123
|
+
end
|
124
|
+
|
125
|
+
def left(x = 1)
|
126
|
+
@x -= x.floor
|
127
|
+
|
128
|
+
self
|
129
|
+
end
|
130
|
+
|
131
|
+
def right(x = 1)
|
132
|
+
@x += x.floor
|
133
|
+
|
134
|
+
self
|
135
|
+
end
|
136
|
+
|
137
|
+
# Erase the specified region.
|
138
|
+
# The region describes the rectangle shape which need to erase.
|
139
|
+
def erase(x1, y1, x2, y2)
|
140
|
+
y1.floor.upto(y2.floor) do |y|
|
141
|
+
x1.floor.upto(x2.floor) do |x|
|
142
|
+
@buffer[get_pointer_from_xy(x, y)] = self.class.wrap ' ', { x: x,
|
143
|
+
y: y }
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
self
|
148
|
+
end
|
149
|
+
|
150
|
+
# Erase from current position to end of the line.
|
151
|
+
def erase_to_end
|
152
|
+
erase @x, @y, @width - 1, @y
|
153
|
+
|
154
|
+
self
|
155
|
+
end
|
156
|
+
|
157
|
+
# Erase from current position to start of the line.
|
158
|
+
def erase_to_start
|
159
|
+
erase 0, @y, @x, @y
|
160
|
+
|
161
|
+
self
|
162
|
+
end
|
163
|
+
|
164
|
+
# Erase from current line to down.
|
165
|
+
def erase_to_down
|
166
|
+
erase 0, @y, @width - 1, @height - 1
|
167
|
+
|
168
|
+
self
|
169
|
+
end
|
170
|
+
|
171
|
+
# Erase from current line to up.
|
172
|
+
def erase_to_up
|
173
|
+
erase 0, 0, @width - 1, @y
|
174
|
+
|
175
|
+
self
|
176
|
+
end
|
177
|
+
|
178
|
+
def erase_line
|
179
|
+
erase 0, @y, @width - 1, @y
|
180
|
+
|
181
|
+
self
|
182
|
+
end
|
183
|
+
|
184
|
+
def erase_screen
|
185
|
+
erase 0, 0, @width - 1, @height - 1
|
186
|
+
|
187
|
+
self
|
188
|
+
end
|
189
|
+
|
190
|
+
def foreground(color)
|
191
|
+
@foreground = color
|
192
|
+
|
193
|
+
self
|
194
|
+
end
|
195
|
+
|
196
|
+
def background(color)
|
197
|
+
@background = color
|
198
|
+
|
199
|
+
self
|
200
|
+
end
|
201
|
+
|
202
|
+
def bold(is_bold = true)
|
203
|
+
@display[:bold] = is_bold
|
204
|
+
|
205
|
+
self
|
206
|
+
end
|
207
|
+
|
208
|
+
def dim(is_dim = true)
|
209
|
+
@display[:dim] = is_dim
|
210
|
+
|
211
|
+
self
|
212
|
+
end
|
213
|
+
|
214
|
+
def underlined(is_underlined = true)
|
215
|
+
@display[:underlined] = is_underlined
|
216
|
+
|
217
|
+
self
|
218
|
+
end
|
219
|
+
|
220
|
+
def blink(is_blink = true)
|
221
|
+
@display[:blink] = is_blink
|
222
|
+
|
223
|
+
self
|
224
|
+
end
|
225
|
+
|
226
|
+
def reverse(is_reverse = true)
|
227
|
+
@display[:reverse] = is_reverse
|
228
|
+
|
229
|
+
self
|
230
|
+
end
|
231
|
+
|
232
|
+
def hidden(is_hidden = true)
|
233
|
+
@display[:hidden] = is_hidden
|
234
|
+
|
235
|
+
self
|
236
|
+
end
|
237
|
+
|
238
|
+
def hide_cursor
|
239
|
+
write_control('[?25l')
|
240
|
+
|
241
|
+
self
|
242
|
+
end
|
243
|
+
|
244
|
+
def show_cursor
|
245
|
+
write_control('[?25h')
|
246
|
+
|
247
|
+
self
|
248
|
+
end
|
249
|
+
|
106
250
|
def write_control(str)
|
107
251
|
$stdout.write(ESCAPE_CHAR + str)
|
108
252
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module KittikRb
|
2
|
+
module Cursor
|
3
|
+
module CorePatches
|
4
|
+
module HashPatch
|
5
|
+
refine Hash do
|
6
|
+
# From ActiveSupport v5.0.0.beta3
|
7
|
+
def slice(*keys)
|
8
|
+
if respond_to?(:convert_key, true)
|
9
|
+
keys.map! { |key| convert_key(key) }
|
10
|
+
end
|
11
|
+
|
12
|
+
keys.each_with_object(self.class.new) do |k, hash|
|
13
|
+
hash[k] = self[k] if has_key?(k)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kittikrb-cursor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vladyslav Siriniok
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -129,11 +129,11 @@ files:
|
|
129
129
|
- kittikrb-cursor.gemspec
|
130
130
|
- lib/kittikrb/cursor.rb
|
131
131
|
- lib/kittikrb/cursor/colors.rb
|
132
|
-
- lib/kittikrb/cursor/
|
132
|
+
- lib/kittikrb/cursor/core_patches/hash.rb
|
133
133
|
- lib/kittikrb/cursor/display_modes.rb
|
134
134
|
- lib/kittikrb/cursor/version.rb
|
135
135
|
- lib/kittikrb_cursor.rb
|
136
|
-
homepage: https://github.com/
|
136
|
+
homepage: https://github.com/kittikrb/cursor
|
137
137
|
licenses:
|
138
138
|
- MIT
|
139
139
|
metadata: {}
|
@@ -156,5 +156,5 @@ rubyforge_project:
|
|
156
156
|
rubygems_version: 2.4.5
|
157
157
|
signing_key:
|
158
158
|
specification_version: 4
|
159
|
-
summary: Low-level API for cursor in terminal.
|
159
|
+
summary: Low-level API for cursor in terminal.
|
160
160
|
test_files: []
|