pryline 0.0.4 → 0.0.5

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.
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: []