pryline 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pryline.rb +77 -1
  3. data/lib/version.rb +1 -1
  4. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e87928b336c07a89688bd40bbcc3b2b151f10c650542964bb5577ddbc23c554f
4
- data.tar.gz: 7974b43eb0a56435b2bbeb7079db7f196bdd9f505575af8de15ccf89461b593d
3
+ metadata.gz: e50f39f9558845777035a93b78401e6a8e5e728c6deb08c41dcf58fa8d0cfa7b
4
+ data.tar.gz: 7e3d56b328292df1428dad319a68e5170a171a6164d54654de61d76f618dc47a
5
5
  SHA512:
6
- metadata.gz: 00df8a6a07c27e7e76a4c7f687461655135500d963a1413582e6f0e8bfe6a396ab04dd469a50bc3f421fa93bd4605fef2fb180fa258428f043723280647b82e9
7
- data.tar.gz: fd3f44e02221234f23497a6e365d5311ce583a4e80f2e4066909f9a50893e2f9c51599cfaf2bbf52ba4b5bbbbf45dccb5787624d85ae22e1a18b4438b23ed1ec
6
+ metadata.gz: f3dca93b4bf451b89a252fe9688f4dea912136a4b0c2c4dbd480dd05676c21d71a3586a4ef091bca2491cd8a16bbf1f2db41ad208901b445733cbad2a863940d
7
+ data.tar.gz: 26a899608964fd93f5ee12ab956e535b9f97186cb3fa3d892ccaf513a6670f1dbf0148a76ec12f61c2de4b1c48c47d6f8ed40c28e0634dd04c2190f254d1999c
data/lib/pryline.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'fiddle'
2
+ require 'fiddle/import'
2
3
  require 'forwardable'
3
4
  require 'readline'
4
5
  module Pryline
@@ -50,6 +51,17 @@ module Pryline
50
51
 
51
52
  BLOCK_CALLERS = {}
52
53
 
54
+ # paren blink timeout
55
+ set_paren_blink_timeout = Fiddle::Function.new(
56
+ libreadline['rl_set_paren_blink_timeout'],
57
+ [Fiddle::TYPE_INT],
58
+ Fiddle::TYPE_INT
59
+ )
60
+
61
+ Pryline.define_singleton_method(:set_paren_blink_timeout) do |usec|
62
+ set_paren_blink_timeout.call(usec)
63
+ end
64
+
53
65
  # accept line
54
66
  accept_line = Fiddle::Function.new(
55
67
  libreadline['rl_newline'],
@@ -174,11 +186,75 @@ module Pryline
174
186
  )
175
187
  end
176
188
 
189
+ # message
190
+
191
+ save_prompt = Fiddle::Function.new(libreadline['rl_save_prompt'], [Fiddle::TYPE_VOID], Fiddle::TYPE_INT)
192
+ Pryline.define_singleton_method(:save_prompt) do
193
+ save_prompt.call(nil)
194
+ end
195
+ set_message = Fiddle::Function.new(libreadline['rl_message'], [Fiddle::TYPE_UINTPTR_T], Fiddle::TYPE_INT)
196
+ Pryline.define_singleton_method(:set_message) do |message|
197
+ buffer, point = Pryline.line_buffer, Pryline.point
198
+ Pryline.delete_text
199
+ Pryline.point = 0
200
+ Pryline.redisplay
201
+ Pryline.save_prompt
202
+ Pryline.insert_text buffer
203
+ Pryline.point = point
204
+ set_message.call(
205
+ Fiddle::Pointer[message]
206
+ )
207
+ end
208
+
209
+ restore_prompt = Fiddle::Function.new(libreadline['rl_restore_prompt'], [Fiddle::TYPE_VOID], Fiddle::TYPE_INT)
210
+ Pryline.define_singleton_method(:restore_prompt) do
211
+ restore_prompt.call(nil)
212
+ end
213
+ clear_message = Fiddle::Function.new(libreadline['rl_clear_message'], [Fiddle::TYPE_VOID], Fiddle::TYPE_INT)
214
+ Pryline.define_singleton_method(:clear_message) do
215
+ Pryline.restore_prompt
216
+ clear_message.call(nil)
217
+ end
218
+
219
+ move_vert = Fiddle::Function.new(libreadline['_rl_move_vert'], [Fiddle::TYPE_INT], Fiddle::TYPE_VOID)
220
+ Pryline.define_singleton_method(:move_vert) do |dest|
221
+ move_vert.call(dest)
222
+ end
223
+
224
+ PromptLength = Fiddle::CStructBuilder.create(
225
+ Fiddle::CStruct,
226
+ [Fiddle::SIZEOF_INT],
227
+ %w(value)
228
+ ).new(Fiddle::Pointer.new(libreadline.sym('rl_visible_prompt_length')).to_i)
229
+ Pryline.define_singleton_method(:prompt_width) { PromptLength.value }
230
+
231
+ LastCPos = Fiddle::CStructBuilder.create(
232
+ Fiddle::CStruct,
233
+ [Fiddle::SIZEOF_INT],
234
+ %w(value)
235
+ ).new(Fiddle::Pointer.new(libreadline.sym('_rl_last_c_pos')).to_i)
236
+ Pryline.define_singleton_method(:last_c_pos) { LastCPos.value }
237
+ LastVPos = Fiddle::CStructBuilder.create(
238
+ Fiddle::CStruct,
239
+ [Fiddle::SIZEOF_INT],
240
+ %w(value)
241
+ ).new(Fiddle::Pointer.new(libreadline.sym('_rl_last_v_pos')).to_i)
242
+ Pryline.define_singleton_method(:last_v_pos) { LastVPos.value }
243
+ ApplicationName = Fiddle::CStructBuilder.create(
244
+ Fiddle::CStruct,
245
+ [1],
246
+ %w(rl_readline_name)
247
+ ).new(Fiddle::Pointer.new(libreadline.sym('rl_readline_name')).to_i)
248
+ Pryline.define_singleton_method(:application_name) { ApplicationName.rl_readline_name.to_s }
249
+ Pryline.define_singleton_method(:application_name=) do |name|
250
+ ApplicationName.rl_readline_name = Fiddle::Pointer[name]
251
+ end
252
+
177
253
  # helpers
178
254
  Pryline.define_singleton_method(:replace_buffer) do |new_contents|
179
255
  Pryline.delete_text
180
256
  Pryline.point = 0
181
- Pryline.insert_text input
257
+ Pryline.insert_text new_contents
182
258
  Pryline.redisplay
183
259
  end
184
260
  @@loaded = true
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pryline
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pryline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Graham
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-13 00:00:00.000000000 Z
11
+ date: 2021-10-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Adds rl_bind_key, rl_bind_keyseq, rl_newline, rl_unbind_key, rl_unbind_keyseq.
14
14
  email: bcgraham+github@gmail.com
@@ -22,7 +22,7 @@ homepage: https://github.com/bcgraham/pryline
22
22
  licenses:
23
23
  - MIT
24
24
  metadata: {}
25
- post_install_message:
25
+ post_install_message:
26
26
  rdoc_options: []
27
27
  require_paths:
28
28
  - lib
@@ -37,9 +37,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
37
37
  - !ruby/object:Gem::Version
38
38
  version: '0'
39
39
  requirements:
40
- - Readline 8.0
41
- rubygems_version: 3.0.3
42
- signing_key:
40
+ - Readline 8.1
41
+ rubygems_version: 3.1.4
42
+ signing_key:
43
43
  specification_version: 4
44
44
  summary: Extend Readline interface to more functions.
45
45
  test_files: []