clipboard 0.7.0 → 0.8.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.
- data/README.rdoc +18 -12
- data/Rakefile +1 -2
- data/VERSION +1 -1
- data/clipboard.gemspec +5 -5
- data/doc/{Clipboard||= Module.new.html → Clipboard.html} +84 -83
- data/doc/README_rdoc.html +25 -28
- data/doc/created.rid +3 -3
- data/doc/index.html +9 -11
- data/doc/lib/clipboard_rb.html +6 -4
- data/lib/clipboard.rb +62 -61
- metadata +5 -11
data/README.rdoc
CHANGED
@@ -1,25 +1,31 @@
|
|
1
1
|
= clipboard
|
2
|
-
Access the clipboard and do not care if the OS is
|
2
|
+
Access the clipboard and do not care if the OS is Linux, MacOS or Windows.
|
3
3
|
|
4
4
|
=== Usage
|
5
|
-
You have <tt>Clipboard.
|
5
|
+
You have <tt>Clipboard.copy</tt>,
|
6
6
|
|
7
|
-
<tt>Clipboard.
|
7
|
+
<tt>Clipboard.paste</tt> and
|
8
8
|
|
9
9
|
<tt>Clipboard.clear</tt>
|
10
10
|
|
11
11
|
Have fun ;)
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
* *Windows*: <tt>win32-clipboard</tt> gem
|
16
|
-
* +Zucker+ gem
|
13
|
+
==== Multiple clipboards
|
14
|
+
On Linux, you can choose, from which clipboard you want to +paste+, default is PRIMARY.
|
17
15
|
|
18
|
-
|
19
|
-
* Don't depend on +xclip+
|
20
|
-
* Don't depend on the <tt>win32-clipboard</tt> gem (or fix the 1.9 issues with the gem)
|
16
|
+
+copy+ copies to all clipboards in Clipboard::CLIPBOARDS.
|
21
17
|
|
22
|
-
|
18
|
+
=== Non-gem requirements
|
19
|
+
* *Linux*: +xclip+ (you can install it on debian/ubuntu with <tt>sudo apt-get install xclip</tt>)
|
20
|
+
* *Windows*: +clip+ (installed by default since Vista)
|
23
21
|
|
24
|
-
|
22
|
+
=== Bugs / TODO
|
23
|
+
* Fix 1.9 and Encoding issues on Windows
|
24
|
+
* Don't depend on +xclip+ ?
|
25
|
+
|
26
|
+
Feel free to report bugs or to implement one of the TODO entries ;)
|
27
|
+
|
28
|
+
=== Copyright
|
25
29
|
Copyright (c) 2010 Jan Lelis, http://rbjl.net, released under the MIT license
|
30
|
+
|
31
|
+
J-_-L
|
data/Rakefile
CHANGED
@@ -6,14 +6,13 @@ begin
|
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "clipboard"
|
8
8
|
gem.summary = %Q{Access the clipboard on all systems}
|
9
|
-
gem.description = %Q{Access the clipboard on all systems (Clipboard.
|
9
|
+
gem.description = %Q{Access the clipboard on all systems (Clipboard.copy & Clipboard.paste)}
|
10
10
|
gem.email = "mail@janlelis.de"
|
11
11
|
gem.homepage = "http://github.com/janlelis/clipboard"
|
12
12
|
gem.authors = ["Jan Lelis"]
|
13
13
|
gem.add_development_dependency "jeweler", ">= 0"
|
14
14
|
gem.add_dependency('zucker', '>= 4')
|
15
15
|
gem.requirements << 'on linux (or other X), you need xclip'
|
16
|
-
gem.requirements << 'on windows, you need the win32-clipboard gem'
|
17
16
|
|
18
17
|
end
|
19
18
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.8.0
|
data/clipboard.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{clipboard}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.8.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jan Lelis"]
|
12
|
-
s.date = %q{2010-10-
|
13
|
-
s.description = %q{Access the clipboard on all systems (Clipboard.
|
12
|
+
s.date = %q{2010-10-03}
|
13
|
+
s.description = %q{Access the clipboard on all systems (Clipboard.copy & Clipboard.paste)}
|
14
14
|
s.email = %q{mail@janlelis.de}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"clipboard.gemspec",
|
28
|
-
"doc/Clipboard
|
28
|
+
"doc/Clipboard.html",
|
29
29
|
"doc/README_rdoc.html",
|
30
30
|
"doc/created.rid",
|
31
31
|
"doc/images/brick.png",
|
@@ -61,7 +61,7 @@ Gem::Specification.new do |s|
|
|
61
61
|
s.homepage = %q{http://github.com/janlelis/clipboard}
|
62
62
|
s.rdoc_options = ["--charset=UTF-8"]
|
63
63
|
s.require_paths = ["lib"]
|
64
|
-
s.requirements = ["on linux (or other X), you need xclip"
|
64
|
+
s.requirements = ["on linux (or other X), you need xclip"]
|
65
65
|
s.rubygems_version = %q{1.3.7}
|
66
66
|
s.summary = %q{Access the clipboard on all systems}
|
67
67
|
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<head>
|
6
6
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
7
7
|
|
8
|
-
<title>Module: Clipboard
|
8
|
+
<title>Module: Clipboard</title>
|
9
9
|
|
10
10
|
<link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
|
11
11
|
|
@@ -66,13 +66,11 @@
|
|
66
66
|
|
67
67
|
<li><a href="#method-c-clear">::clear</a></li>
|
68
68
|
|
69
|
-
<li><a href="#method-c-
|
69
|
+
<li><a href="#method-c-copy">::copy</a></li>
|
70
70
|
|
71
|
-
<li><a href="#method-c-
|
71
|
+
<li><a href="#method-c-paste">::paste</a></li>
|
72
72
|
|
73
|
-
<li><a href="#method-c-
|
74
|
-
|
75
|
-
<li><a href="#method-c-write">::write</a></li>
|
73
|
+
<li><a href="#method-c-paste">::paste</a></li>
|
76
74
|
|
77
75
|
</ul>
|
78
76
|
</div>
|
@@ -110,7 +108,7 @@
|
|
110
108
|
|
111
109
|
<ul class="link-list">
|
112
110
|
|
113
|
-
<li><a href="./Clipboard
|
111
|
+
<li><a href="./Clipboard.html">Clipboard</a></li>
|
114
112
|
|
115
113
|
</ul>
|
116
114
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
@@ -121,7 +119,7 @@
|
|
121
119
|
</div>
|
122
120
|
|
123
121
|
<div id="documentation">
|
124
|
-
<h1 class="module">Clipboard
|
122
|
+
<h1 class="module">Clipboard</h1>
|
125
123
|
|
126
124
|
<div id="description">
|
127
125
|
|
@@ -133,7 +131,17 @@
|
|
133
131
|
<h3 class="section-header">Constants</h3>
|
134
132
|
<dl>
|
135
133
|
|
136
|
-
<dt><a name="
|
134
|
+
<dt><a name="WriteCommands">WriteCommands</a></dt>
|
135
|
+
|
136
|
+
<dd class="description"></dd>
|
137
|
+
|
138
|
+
|
139
|
+
<dt><a name="CF_TEXT">CF_TEXT</a></dt>
|
140
|
+
|
141
|
+
<dd class="description"></dd>
|
142
|
+
|
143
|
+
|
144
|
+
<dt><a name="WriteCommands">WriteCommands</a></dt>
|
137
145
|
|
138
146
|
<dd class="description"></dd>
|
139
147
|
|
@@ -143,7 +151,12 @@
|
|
143
151
|
<dd class="description"></dd>
|
144
152
|
|
145
153
|
|
146
|
-
<dt><a name="
|
154
|
+
<dt><a name="Clipboards">Clipboards</a></dt>
|
155
|
+
|
156
|
+
<dd class="description"></dd>
|
157
|
+
|
158
|
+
|
159
|
+
<dt><a name="WriteCommands">WriteCommands</a></dt>
|
147
160
|
|
148
161
|
<dd class="description"></dd>
|
149
162
|
|
@@ -186,11 +199,10 @@
|
|
186
199
|
<div class="method-source-code"
|
187
200
|
id="clear-source">
|
188
201
|
<pre>
|
189
|
-
<span class="ruby-comment cmt"># File lib/clipboard.rb, line
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
46: <span class="ruby-keyword kw">end</span></pre>
|
202
|
+
<span class="ruby-comment cmt"># File lib/clipboard.rb, line 78</span>
|
203
|
+
78: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">clear</span>
|
204
|
+
79: <span class="ruby-identifier">copy</span> <span class="ruby-value str">''</span>
|
205
|
+
80: <span class="ruby-keyword kw">end</span></pre>
|
194
206
|
</div>
|
195
207
|
|
196
208
|
</div>
|
@@ -221,44 +233,13 @@
|
|
221
233
|
<div class="method-source-code"
|
222
234
|
id="clear-source">
|
223
235
|
<pre>
|
224
|
-
<span class="ruby-comment cmt"># File lib/clipboard.rb, line
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
</div>
|
236
|
-
|
237
|
-
|
238
|
-
<div id="read-method" class="method-detail ">
|
239
|
-
<a name="method-c-read"></a>
|
240
|
-
|
241
|
-
<div class="method-heading">
|
242
|
-
|
243
|
-
<span class="method-name">read</span><span
|
244
|
-
class="method-args">()</span>
|
245
|
-
<span class="method-click-advice">click to toggle source</span>
|
246
|
-
|
247
|
-
</div>
|
248
|
-
|
249
|
-
<div class="method-description">
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
<div class="method-source-code"
|
256
|
-
id="read-source">
|
257
|
-
<pre>
|
258
|
-
<span class="ruby-comment cmt"># File lib/clipboard.rb, line 24</span>
|
259
|
-
24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read</span>
|
260
|
-
25: <span class="ruby-node">%[#{ ReadCommand }]</span>
|
261
|
-
26: <span class="ruby-keyword kw">end</span></pre>
|
236
|
+
<span class="ruby-comment cmt"># File lib/clipboard.rb, line 42</span>
|
237
|
+
42: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">clear</span>
|
238
|
+
43: <span class="ruby-ivar">@open</span>[<span class="ruby-value">0</span>]
|
239
|
+
44: <span class="ruby-ivar">@empty</span>[]
|
240
|
+
45: <span class="ruby-ivar">@close</span>[]
|
241
|
+
46: <span class="ruby-identifier">paste</span>
|
242
|
+
47: <span class="ruby-keyword kw">end</span></pre>
|
262
243
|
</div>
|
263
244
|
|
264
245
|
</div>
|
@@ -269,13 +250,13 @@
|
|
269
250
|
</div>
|
270
251
|
|
271
252
|
|
272
|
-
<div id="
|
273
|
-
<a name="method-c-
|
253
|
+
<div id="copy-method" class="method-detail ">
|
254
|
+
<a name="method-c-copy"></a>
|
274
255
|
|
275
256
|
<div class="method-heading">
|
276
257
|
|
277
|
-
<span class="method-name">
|
278
|
-
class="method-args">()</span>
|
258
|
+
<span class="method-name">copy</span><span
|
259
|
+
class="method-args">(data)</span>
|
279
260
|
<span class="method-click-advice">click to toggle source</span>
|
280
261
|
|
281
262
|
</div>
|
@@ -287,12 +268,15 @@
|
|
287
268
|
|
288
269
|
|
289
270
|
<div class="method-source-code"
|
290
|
-
id="
|
271
|
+
id="copy-source">
|
291
272
|
<pre>
|
292
|
-
<span class="ruby-comment cmt"># File lib/clipboard.rb, line
|
293
|
-
|
294
|
-
|
295
|
-
|
273
|
+
<span class="ruby-comment cmt"># File lib/clipboard.rb, line 83</span>
|
274
|
+
83: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">copy</span>(<span class="ruby-identifier">data</span>)
|
275
|
+
84: <span class="ruby-constant">WriteCommands</span>.<span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">cmd</span><span class="ruby-operator">|</span>
|
276
|
+
85: <span class="ruby-constant">IO</span>.<span class="ruby-identifier">popen</span>( <span class="ruby-identifier">cmd</span>, <span class="ruby-value str">'w'</span> ){ <span class="ruby-operator">|</span><span class="ruby-identifier">input</span><span class="ruby-operator">|</span> <span class="ruby-identifier">input</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">data</span> }
|
277
|
+
86: }
|
278
|
+
87: <span class="ruby-identifier">paste</span>
|
279
|
+
88: <span class="ruby-keyword kw">end</span></pre>
|
296
280
|
</div>
|
297
281
|
|
298
282
|
</div>
|
@@ -303,13 +287,13 @@
|
|
303
287
|
</div>
|
304
288
|
|
305
289
|
|
306
|
-
<div id="
|
307
|
-
<a name="method-c-
|
290
|
+
<div id="paste-method" class="method-detail ">
|
291
|
+
<a name="method-c-paste"></a>
|
308
292
|
|
309
293
|
<div class="method-heading">
|
310
294
|
|
311
|
-
<span class="method-name">
|
312
|
-
class="method-args">(
|
295
|
+
<span class="method-name">paste</span><span
|
296
|
+
class="method-args">(which = nil)</span>
|
313
297
|
<span class="method-click-advice">click to toggle source</span>
|
314
298
|
|
315
299
|
</div>
|
@@ -321,13 +305,17 @@
|
|
321
305
|
|
322
306
|
|
323
307
|
<div class="method-source-code"
|
324
|
-
id="
|
308
|
+
id="paste-source">
|
325
309
|
<pre>
|
326
|
-
<span class="ruby-comment cmt"># File lib/clipboard.rb, line
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
310
|
+
<span class="ruby-comment cmt"># File lib/clipboard.rb, line 69</span>
|
311
|
+
69: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">paste</span>(<span class="ruby-identifier">which</span> = <span class="ruby-keyword kw">nil</span>)
|
312
|
+
70: <span class="ruby-identifier">selection_string</span> = <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Clipboards</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">which</span>.<span class="ruby-identifier">to_s</span>)
|
313
|
+
71: <span class="ruby-node">" -selection #{which}"</span>
|
314
|
+
72: <span class="ruby-keyword kw">else</span>
|
315
|
+
73: <span class="ruby-value str">''</span>
|
316
|
+
74: <span class="ruby-keyword kw">end</span>
|
317
|
+
75: <span class="ruby-node">%[#{ ReadCommand + selection_string }]</span>
|
318
|
+
76: <span class="ruby-keyword kw">end</span></pre>
|
331
319
|
</div>
|
332
320
|
|
333
321
|
</div>
|
@@ -338,31 +326,44 @@
|
|
338
326
|
</div>
|
339
327
|
|
340
328
|
|
341
|
-
<div id="
|
342
|
-
<a name="method-c-
|
329
|
+
<div id="paste-method" class="method-detail ">
|
330
|
+
<a name="method-c-paste"></a>
|
343
331
|
|
344
332
|
<div class="method-heading">
|
345
333
|
|
346
|
-
<span class="method-name">
|
347
|
-
class="method-args">(
|
334
|
+
<span class="method-name">paste</span><span
|
335
|
+
class="method-args">(_=nil)</span>
|
348
336
|
<span class="method-click-advice">click to toggle source</span>
|
349
337
|
|
350
338
|
</div>
|
351
339
|
|
352
340
|
<div class="method-description">
|
353
341
|
|
354
|
-
|
342
|
+
<p>
|
343
|
+
paste & clear inspired by segment7.net and <a
|
344
|
+
href="http://www.codeproject.com/KB/clipboard/archerclipboard1.aspx">www.codeproject.com/KB/clipboard/archerclipboard1.aspx</a>
|
345
|
+
does not work on 1.9, has probably something to do with utf8 strings ?
|
346
|
+
</p>
|
355
347
|
|
356
348
|
|
357
349
|
|
358
350
|
<div class="method-source-code"
|
359
|
-
id="
|
351
|
+
id="paste-source">
|
360
352
|
<pre>
|
361
|
-
<span class="ruby-comment cmt"># File lib/clipboard.rb, line
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
353
|
+
<span class="ruby-comment cmt"># File lib/clipboard.rb, line 28</span>
|
354
|
+
28: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">paste</span>(<span class="ruby-identifier">_</span>=<span class="ruby-keyword kw">nil</span>)
|
355
|
+
29: <span class="ruby-identifier">data</span> = <span class="ruby-value str">""</span>
|
356
|
+
30: <span class="ruby-keyword kw">if</span> <span class="ruby-value">0</span> <span class="ruby-operator">!=</span> <span class="ruby-ivar">@open</span>[ <span class="ruby-value">0</span> ]
|
357
|
+
31: <span class="ruby-identifier">hclip</span> = <span class="ruby-ivar">@get</span>[ <span class="ruby-constant">CF_TEXT</span> ]
|
358
|
+
32: <span class="ruby-keyword kw">if</span> <span class="ruby-value">0</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">hclip</span>
|
359
|
+
33: <span class="ruby-keyword kw">if</span> <span class="ruby-value">0</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">data</span> = <span class="ruby-ivar">@lock</span>[ <span class="ruby-identifier">hclip</span> ]
|
360
|
+
34: <span class="ruby-ivar">@unlock</span>[ <span class="ruby-identifier">hclip</span> ]
|
361
|
+
35: <span class="ruby-keyword kw">end</span>
|
362
|
+
36: <span class="ruby-keyword kw">end</span>
|
363
|
+
37: <span class="ruby-ivar">@close</span>[]
|
364
|
+
38: <span class="ruby-keyword kw">end</span>
|
365
|
+
39: <span class="ruby-identifier">data</span> <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>
|
366
|
+
40: <span class="ruby-keyword kw">end</span></pre>
|
366
367
|
</div>
|
367
368
|
|
368
369
|
</div>
|
data/doc/README_rdoc.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<head>
|
7
7
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
8
8
|
|
9
|
-
<title>File: README.rdoc [clipboard 0.
|
9
|
+
<title>File: README.rdoc [clipboard 0.7.0
|
10
10
|
]</title>
|
11
11
|
|
12
12
|
<link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet" />
|
@@ -61,7 +61,7 @@
|
|
61
61
|
|
62
62
|
<ul class="link-list">
|
63
63
|
|
64
|
-
<li><a href="./Clipboard
|
64
|
+
<li><a href="./Clipboard.html">Clipboard</a></li>
|
65
65
|
|
66
66
|
</ul>
|
67
67
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
@@ -74,14 +74,14 @@
|
|
74
74
|
<div id="documentation">
|
75
75
|
<h1>clipboard</h1>
|
76
76
|
<p>
|
77
|
-
Access the clipboard and do not care if the OS is
|
77
|
+
Access the clipboard and do not care if the OS is Linux, MacOS or Windows.
|
78
78
|
</p>
|
79
79
|
<h3>Usage</h3>
|
80
80
|
<p>
|
81
|
-
You have <tt>Clipboard.
|
81
|
+
You have <tt>Clipboard.copy</tt>,
|
82
82
|
</p>
|
83
83
|
<p>
|
84
|
-
<tt>Clipboard.
|
84
|
+
<tt>Clipboard.paste</tt> and
|
85
85
|
</p>
|
86
86
|
<p>
|
87
87
|
<tt>Clipboard.clear</tt>
|
@@ -89,50 +89,47 @@ You have <tt>Clipboard.write</tt> [<tt>copy</tt>],
|
|
89
89
|
<p>
|
90
90
|
Have fun ;)
|
91
91
|
</p>
|
92
|
-
<
|
93
|
-
<
|
94
|
-
<
|
95
|
-
|
96
|
-
apt-get install xclip</tt>)
|
97
|
-
</p>
|
98
|
-
</li>
|
99
|
-
<li><p>
|
100
|
-
<b>Windows</b>: <tt>win32-clipboard</tt> gem
|
92
|
+
<h4>Multiple clipboards</h4>
|
93
|
+
<p>
|
94
|
+
On Linux, you can choose, from which clipboard you want to <tt>paste</tt>,
|
95
|
+
default is PRIMARY.
|
101
96
|
</p>
|
102
|
-
|
103
|
-
<
|
104
|
-
<tt>Zucker</tt> gem
|
97
|
+
<p>
|
98
|
+
<tt>copy</tt> copies to all clipboards in Clipboard::CLIPBOARDS.
|
105
99
|
</p>
|
106
|
-
</
|
107
|
-
</ul>
|
108
|
-
<h3>TODO</h3>
|
100
|
+
<h3>Non-gem requirements</h3>
|
109
101
|
<ul>
|
110
102
|
<li><p>
|
111
|
-
|
112
|
-
|
103
|
+
<b>Linux</b>: <tt>xclip</tt> (you can install it on debian/ubuntu with
|
104
|
+
<tt>sudo apt-get install xclip</tt>)
|
113
105
|
</p>
|
114
106
|
</li>
|
115
107
|
<li><p>
|
116
|
-
|
108
|
+
<b>Windows</b>: <tt>clip</tt> (installed by default since Vista)
|
117
109
|
</p>
|
118
110
|
</li>
|
111
|
+
</ul>
|
112
|
+
<h3>Bugs / TODO</h3>
|
113
|
+
<ul>
|
119
114
|
<li><p>
|
120
|
-
|
121
|
-
issues with the gem)
|
115
|
+
Fix 1.9 and Encoding issues on Windows
|
122
116
|
</p>
|
123
117
|
</li>
|
124
118
|
<li><p>
|
125
|
-
|
119
|
+
Don’t depend on <tt>xclip</tt> ?
|
126
120
|
</p>
|
127
121
|
</li>
|
128
122
|
</ul>
|
129
123
|
<p>
|
130
|
-
Feel free to report bugs or to implement one of the
|
124
|
+
Feel free to report bugs or to implement one of the TODO entries ;)
|
131
125
|
</p>
|
132
|
-
<
|
126
|
+
<h3>Copyright</h3>
|
133
127
|
<p>
|
134
128
|
Copyright © 2010 Jan Lelis, <a href="http://rbjl.net">rbjl.net</a>,
|
135
129
|
released under the MIT license
|
130
|
+
</p>
|
131
|
+
<p>
|
132
|
+
J-_-L
|
136
133
|
</p>
|
137
134
|
|
138
135
|
</div>
|
data/doc/created.rid
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
README.rdoc
|
3
|
-
lib/clipboard.rb
|
1
|
+
Sun, 03 Oct 2010 06:06:40 +0200
|
2
|
+
README.rdoc Sun, 03 Oct 2010 06:03:31 +0200
|
3
|
+
lib/clipboard.rb Sun, 03 Oct 2010 06:06:25 +0200
|
data/doc/index.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<head>
|
7
7
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
8
8
|
|
9
|
-
<title>clipboard 0.
|
9
|
+
<title>clipboard 0.7.0
|
10
10
|
</title>
|
11
11
|
|
12
12
|
<link type="text/css" media="screen" href="rdoc.css" rel="stylesheet" />
|
@@ -20,11 +20,11 @@
|
|
20
20
|
<body class="indexpage">
|
21
21
|
|
22
22
|
|
23
|
-
<h1>clipboard 0.
|
23
|
+
<h1>clipboard 0.7.0
|
24
24
|
</h1>
|
25
25
|
|
26
26
|
|
27
|
-
<p>This is the API documentation for 'clipboard 0.
|
27
|
+
<p>This is the API documentation for 'clipboard 0.7.0
|
28
28
|
'.</p>
|
29
29
|
|
30
30
|
|
@@ -41,24 +41,22 @@
|
|
41
41
|
<h2 id="classes">Classes/Modules</h2>
|
42
42
|
<ul>
|
43
43
|
|
44
|
-
<li class="module"><a href="Clipboard
|
44
|
+
<li class="module"><a href="Clipboard.html">Clipboard</a></li>
|
45
45
|
|
46
46
|
</ul>
|
47
47
|
|
48
48
|
<h2 id="methods">Methods</h2>
|
49
49
|
<ul>
|
50
50
|
|
51
|
-
<li><a href="Clipboard
|
51
|
+
<li><a href="Clipboard.html#method-c-clear">::clear — Clipboard</a></li>
|
52
52
|
|
53
|
-
<li><a href="Clipboard
|
53
|
+
<li><a href="Clipboard.html#method-c-clear">::clear — Clipboard</a></li>
|
54
54
|
|
55
|
-
<li><a href="Clipboard
|
55
|
+
<li><a href="Clipboard.html#method-c-copy">::copy — Clipboard</a></li>
|
56
56
|
|
57
|
-
<li><a href="Clipboard
|
57
|
+
<li><a href="Clipboard.html#method-c-paste">::paste — Clipboard</a></li>
|
58
58
|
|
59
|
-
<li><a href="Clipboard
|
60
|
-
|
61
|
-
<li><a href="Clipboard||= Module.new.html#method-c-write">::write — Clipboard||= Module.new</a></li>
|
59
|
+
<li><a href="Clipboard.html#method-c-paste">::paste — Clipboard</a></li>
|
62
60
|
|
63
61
|
</ul>
|
64
62
|
|
data/doc/lib/clipboard_rb.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<head>
|
7
7
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
8
8
|
|
9
|
-
<title>File: clipboard.rb [clipboard 0.
|
9
|
+
<title>File: clipboard.rb [clipboard 0.7.0
|
10
10
|
]</title>
|
11
11
|
|
12
12
|
<link type="text/css" media="screen" href="../rdoc.css" rel="stylesheet" />
|
@@ -25,7 +25,7 @@
|
|
25
25
|
<div id="metadata">
|
26
26
|
<dl>
|
27
27
|
<dt class="modified-date">Last Modified</dt>
|
28
|
-
<dd class="modified-date">2010-10-
|
28
|
+
<dd class="modified-date">2010-10-03 06:06:25 +0200</dd>
|
29
29
|
|
30
30
|
|
31
31
|
<dt class="requires">Requires</dt>
|
@@ -36,9 +36,11 @@
|
|
36
36
|
|
37
37
|
<li>zucker/alias_for</li>
|
38
38
|
|
39
|
-
<li>
|
39
|
+
<li>stringio</li>
|
40
|
+
|
41
|
+
<li>Win32API</li>
|
40
42
|
|
41
|
-
<li>
|
43
|
+
<li>open3</li>
|
42
44
|
|
43
45
|
</ul>
|
44
46
|
</dd>
|
data/lib/clipboard.rb
CHANGED
@@ -1,90 +1,91 @@
|
|
1
1
|
require 'zucker/os'
|
2
2
|
require 'zucker/alias_for'
|
3
3
|
require 'stringio'
|
4
|
-
|
5
4
|
require File.expand_path '../../version', __FILE__
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
module Clipboard
|
7
|
+
if OS.windows?
|
8
|
+
WriteCommands = ['clip']
|
9
|
+
CF_TEXT = 1
|
10
|
+
|
11
|
+
require 'Win32API'
|
12
|
+
# init api handlers
|
13
|
+
@open = Win32API.new("user32", "OpenClipboard",['L'],'L')
|
14
|
+
@close = Win32API.new("user32", "CloseClipboard",[],'L')
|
15
|
+
@empty = Win32API.new("user32", "EmptyClipboard",[],'L')
|
16
|
+
@get = Win32API.new("user32", "GetClipboardData", ['L'], 'L')
|
17
|
+
@lock = Win32API.new("kernel32", "GlobalLock", ['L'], 'P')
|
18
|
+
@unlock = Win32API.new("kernel32", "GlobalUnlock", ['L'], 'L')
|
19
|
+
instance_variables.each{ |handler|
|
20
|
+
instance_variable_get(handler).instance_eval do
|
21
|
+
alias [] call
|
22
|
+
end
|
23
|
+
}
|
24
|
+
|
25
|
+
# paste & clear
|
26
|
+
# inspired by segment7.net and http://www.codeproject.com/KB/clipboard/archerclipboard1.aspx
|
27
|
+
# does not work on 1.9, has probably something to do with utf8 strings ?
|
28
|
+
def self.paste(_=nil)
|
29
|
+
data = ""
|
30
|
+
if 0 != @open[ 0 ]
|
31
|
+
hclip = @get[ CF_TEXT ]
|
32
|
+
if 0 != hclip
|
33
|
+
if 0 != data = @lock[ hclip ]
|
34
|
+
@unlock[ hclip ]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
@close[]
|
38
|
+
end
|
39
|
+
data || ""
|
40
|
+
end
|
14
41
|
|
15
|
-
|
16
|
-
|
17
|
-
|
42
|
+
def self.clear
|
43
|
+
@open[0]
|
44
|
+
@empty[]
|
45
|
+
@close[]
|
46
|
+
paste
|
47
|
+
end
|
48
|
+
else #non-windows
|
18
49
|
require 'open3'
|
19
50
|
|
20
51
|
if OS.mac?
|
21
|
-
|
52
|
+
WriteCommands = ['pbcopy']
|
22
53
|
ReadCommand = 'pbpaste'
|
23
54
|
else # linuX
|
24
|
-
|
55
|
+
Clipboards = %w[clipboard primary secondary]
|
56
|
+
WriteCommands = Clipboards.map{|cb| 'xclip -selection ' + cb }
|
25
57
|
ReadCommand = 'xclip -o'
|
26
58
|
|
27
59
|
# catch dependency errors
|
28
60
|
Open3.popen3( "xclip -version" ){ |_, _, error|
|
29
61
|
unless error.read =~ /^xclip version/
|
30
|
-
raise "clipboard -\n" +
|
31
|
-
"Could not find required prgram xclip\n" +
|
62
|
+
raise "clipboard -\n" +
|
63
|
+
"Could not find required prgram xclip\n" +
|
32
64
|
"You can install it (on debian/ubuntu) with sudo apt-get install xclip"
|
33
65
|
end
|
34
66
|
}
|
35
67
|
end
|
36
68
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
69
|
+
def self.paste(which = nil)
|
70
|
+
selection_string = if Clipboards.include?(which.to_s)
|
71
|
+
" -selection #{which}"
|
72
|
+
else
|
73
|
+
''
|
74
|
+
end
|
75
|
+
%x[#{ ReadCommand + selection_string }]
|
42
76
|
end
|
43
77
|
|
44
|
-
def
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
def clear
|
49
|
-
write ''
|
50
|
-
end
|
51
|
-
when OS.windows?
|
52
|
-
begin
|
53
|
-
require 'win32/clipboard'
|
54
|
-
rescue LoadError
|
55
|
-
raise "clipboard -\n" +
|
56
|
-
"Could not load the required win32-clipboard gem\n"
|
57
|
-
"You can install it with gem install win32-clipboard"
|
78
|
+
def self.clear
|
79
|
+
copy ''
|
58
80
|
end
|
59
|
-
|
60
|
-
def write(data)
|
61
|
-
Win32::Clipboard.set_data( data )
|
62
|
-
Win32::Clipboard.data
|
63
|
-
end
|
64
|
-
|
65
|
-
def read
|
66
|
-
Win32::Clipboard.data
|
67
|
-
end
|
68
|
-
|
69
|
-
def clear
|
70
|
-
Win32::Clipboard.empty
|
71
|
-
Win32::Clipboard.data
|
72
|
-
end
|
73
|
-
end#case
|
74
|
-
|
75
|
-
alias_for :write, :copy
|
76
|
-
alias_for :read, :paste
|
77
|
-
|
78
|
-
# private
|
79
|
-
|
80
|
-
def capture_stdout
|
81
|
-
capture = StringIO.new
|
82
|
-
restore, $stdout = $stdout, capture
|
83
|
-
yield
|
84
|
-
$stdout = restore
|
85
|
-
capture.string
|
86
81
|
end
|
87
82
|
|
83
|
+
def self.copy(data)
|
84
|
+
WriteCommands.each{ |cmd|
|
85
|
+
IO.popen( cmd, 'w' ){ |input| input << data }
|
86
|
+
}
|
87
|
+
paste
|
88
|
+
end
|
88
89
|
end
|
89
90
|
|
90
91
|
# J-_-L
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clipboard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 3
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
|
-
-
|
7
|
+
- 8
|
9
8
|
- 0
|
10
|
-
version: 0.
|
9
|
+
version: 0.8.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Jan Lelis
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-10-
|
17
|
+
date: 2010-10-03 00:00:00 +02:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
@@ -40,13 +38,12 @@ dependencies:
|
|
40
38
|
requirements:
|
41
39
|
- - ">="
|
42
40
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 11
|
44
41
|
segments:
|
45
42
|
- 4
|
46
43
|
version: "4"
|
47
44
|
type: :runtime
|
48
45
|
version_requirements: *id002
|
49
|
-
description: Access the clipboard on all systems (Clipboard.
|
46
|
+
description: Access the clipboard on all systems (Clipboard.copy & Clipboard.paste)
|
50
47
|
email: mail@janlelis.de
|
51
48
|
executables: []
|
52
49
|
|
@@ -64,7 +61,7 @@ files:
|
|
64
61
|
- Rakefile
|
65
62
|
- VERSION
|
66
63
|
- clipboard.gemspec
|
67
|
-
- doc/Clipboard
|
64
|
+
- doc/Clipboard.html
|
68
65
|
- doc/README_rdoc.html
|
69
66
|
- doc/created.rid
|
70
67
|
- doc/images/brick.png
|
@@ -110,7 +107,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
107
|
requirements:
|
111
108
|
- - ">="
|
112
109
|
- !ruby/object:Gem::Version
|
113
|
-
hash: 3
|
114
110
|
segments:
|
115
111
|
- 0
|
116
112
|
version: "0"
|
@@ -119,13 +115,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
115
|
requirements:
|
120
116
|
- - ">="
|
121
117
|
- !ruby/object:Gem::Version
|
122
|
-
hash: 3
|
123
118
|
segments:
|
124
119
|
- 0
|
125
120
|
version: "0"
|
126
121
|
requirements:
|
127
122
|
- on linux (or other X), you need xclip
|
128
|
-
- on windows, you need the win32-clipboard gem
|
129
123
|
rubyforge_project:
|
130
124
|
rubygems_version: 1.3.7
|
131
125
|
signing_key:
|