pryline 0.0.1 → 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 +127 -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: a8a05c3d38eab0ed627af981380502a0a4c43890e39510ae283b5fad19fdcbdd
4
- data.tar.gz: bc406e7e2f7186506defdc6b6d248ba17570cabdf8f2c3e3ab213526801933ba
3
+ metadata.gz: e50f39f9558845777035a93b78401e6a8e5e728c6deb08c41dcf58fa8d0cfa7b
4
+ data.tar.gz: 7e3d56b328292df1428dad319a68e5170a171a6164d54654de61d76f618dc47a
5
5
  SHA512:
6
- metadata.gz: 10a1ff3fb910769f94577a1b84ff50c851b79f7d1783396da63684d7824dd3f6d2748e150817e372355baa5069afc35a0ab4f1df77076727da853565e6b1baae
7
- data.tar.gz: 5c26f9a5c20dc8cbba41ec1b7a804fe5015ae21fb46413f7fc7af6bb44dd11355b3ba8e1707d0fdd307faa70196d6c5d65e4e34610dafa225b6a6a55d3173ea9
6
+ metadata.gz: f3dca93b4bf451b89a252fe9688f4dea912136a4b0c2c4dbd480dd05676c21d71a3586a4ef091bca2491cd8a16bbf1f2db41ad208901b445733cbad2a863940d
7
+ data.tar.gz: 26a899608964fd93f5ee12ab956e535b9f97186cb3fa3d892ccaf513a6670f1dbf0148a76ec12f61c2de4b1c48c47d6f8ed40c28e0634dd04c2190f254d1999c
data/lib/pryline.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require 'fiddle'
2
+ require 'fiddle/import'
2
3
  require 'forwardable'
4
+ require 'readline'
3
5
  module Pryline
4
6
  unless defined?(@@loaded) && @@loaded
5
7
  HISTORY = Readline::HISTORY
@@ -49,6 +51,17 @@ module Pryline
49
51
 
50
52
  BLOCK_CALLERS = {}
51
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
+
52
65
  # accept line
53
66
  accept_line = Fiddle::Function.new(
54
67
  libreadline['rl_newline'],
@@ -60,6 +73,55 @@ module Pryline
60
73
  accept_line.call(1, "\n".ord)
61
74
  end
62
75
 
76
+ # previous line
77
+ previous_line = Fiddle::Function.new(
78
+ libreadline['rl_previous_screen_line'],
79
+ [Fiddle::TYPE_INT, Fiddle::TYPE_INT],
80
+ Fiddle::TYPE_INT
81
+ )
82
+ Pryline.define_singleton_method(:previous_line) do
83
+ previous_line.call(1, "f".ord)
84
+ end
85
+
86
+ # next line
87
+ next_line = Fiddle::Function.new(
88
+ libreadline['rl_next_screen_line'],
89
+ [Fiddle::TYPE_INT, Fiddle::TYPE_INT],
90
+ Fiddle::TYPE_INT
91
+ )
92
+ Pryline.define_singleton_method(:next_line) do
93
+ next_line.call(1, "f".ord)
94
+ end
95
+
96
+ # next history
97
+ next_history = Fiddle::Function.new(
98
+ libreadline['rl_get_next_history'],
99
+ [Fiddle::TYPE_INT, Fiddle::TYPE_INT],
100
+ Fiddle::TYPE_INT
101
+ )
102
+ Pryline.define_singleton_method(:next_history) do
103
+ next_history.call(1, "f".ord)
104
+ end
105
+
106
+ # previous history
107
+ previous_history = Fiddle::Function.new(
108
+ libreadline['rl_get_previous_history'],
109
+ [Fiddle::TYPE_INT, Fiddle::TYPE_INT],
110
+ Fiddle::TYPE_INT
111
+ )
112
+ Pryline.define_singleton_method(:previous_history) do
113
+ previous_history.call(1, "f".ord)
114
+ end
115
+
116
+ where_history = Fiddle::Function.new(
117
+ libreadline['where_history'],
118
+ [Fiddle::TYPE_VOID],
119
+ Fiddle::TYPE_INT
120
+ )
121
+ Pryline.define_singleton_method(:where_history) do
122
+ where_history.call(nil)
123
+ end
124
+
63
125
  # null function
64
126
  null_function = Fiddle::Function.new(
65
127
  libreadline['_rl_null_function'],
@@ -124,11 +186,75 @@ module Pryline
124
186
  )
125
187
  end
126
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
+
127
253
  # helpers
128
254
  Pryline.define_singleton_method(:replace_buffer) do |new_contents|
129
255
  Pryline.delete_text
130
256
  Pryline.point = 0
131
- Pryline.insert_text input
257
+ Pryline.insert_text new_contents
132
258
  Pryline.redisplay
133
259
  end
134
260
  @@loaded = true
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pryline
2
- VERSION = "0.0.1"
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.1
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-09 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.1
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: []