clippy 2.2.1 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/README.md +9 -12
- data/bin/clippy +6 -7
- data/lib/clippy.rb +36 -22
- data/lib/clippy/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6f7e86513ddda4fedd2dabdfa424d290233c390
|
4
|
+
data.tar.gz: f127557e982d74e3377f7cfb114d81a21b178306
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 605f99bab2aa4c37f4a9f80e6c361a4ffe874ca939b6721f20bd672411f8d619649a896d318a1322062ef75f59d186d1ce83ceada9d6271fd970fd16acd732d8
|
7
|
+
data.tar.gz: e6be611a0a543f328c9b8f184af1d23bd181788f6ec057a55db743659e62e5ce1b9009f24100a9165b7b5aa09500df5699fc4b0b49227915cfc1f28cfe3a1d31
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -8,29 +8,26 @@ Clippy is a cross-platform clipboard utility and script for Ruby.
|
|
8
8
|
* OS X: `pbcopy`
|
9
9
|
* Linux: `xsel` || `xclip`
|
10
10
|
|
11
|
-
*Right now there is a bug with jRuby stable that causes Clippy to fail, this bug is inside of Open3.popen3 where jRuby actually short-circuits and does not meet the same guidelines as Ruby1.9+, you can see the progress of this bug at: http://jira.codehaus.org/browse/JRUBY-6409 -- this has been fixed in jRuby-head so if you plan to use Clippy please use jRuby-head until a new stable is released.*
|
12
|
-
|
13
|
-
---
|
14
11
|
Examples:
|
15
12
|
|
16
13
|
```bash
|
17
14
|
clippy --copy '#1'
|
18
|
-
clippy --paste
|
19
|
-
echo '#2' |clippy --copy
|
20
15
|
clippy --copy < 'file#3.txt'
|
16
|
+
echo '#2' |clippy --copy
|
17
|
+
clippy --paste
|
21
18
|
```
|
22
19
|
|
23
20
|
```ruby
|
24
21
|
require 'clippy'
|
22
|
+
Clippy.paste; Clippy.clear
|
25
23
|
Clippy.copy('#1')
|
26
|
-
Clippy.paste and Clippy.clear
|
27
24
|
```
|
28
25
|
|
29
26
|
```
|
30
|
-
Clippy v2.0
|
31
|
-
--paste
|
32
|
-
--
|
33
|
-
--
|
34
|
-
--version
|
35
|
-
--
|
27
|
+
Clippy v2.3.0: Clippy [--copy [< File] ['Text']]
|
28
|
+
-p, --paste Paste
|
29
|
+
-N, --no-unescape Do not unescape \n
|
30
|
+
-c, --copy [STR] Copy a String or STDIN```
|
31
|
+
-v, --version Version
|
32
|
+
-C, --clear Clear
|
36
33
|
```
|
data/bin/clippy
CHANGED
@@ -6,13 +6,12 @@ require "optparse"
|
|
6
6
|
OptionParser.new do |opts|
|
7
7
|
opts.banner = "Clippy v#{Clippy::VERSION}: Clippy [--copy [< File] ['Text']]"
|
8
8
|
|
9
|
-
opts.on("--paste", "Paste") { $stdout.puts Clippy.paste }
|
10
|
-
opts.on("--
|
11
|
-
opts.on("--
|
12
|
-
opts.on("--
|
9
|
+
opts.on("-p", "--paste", "Paste") { $stdout.puts Clippy.paste }
|
10
|
+
opts.on("-N", "--no-unescape", "Do not unescape \\n") { Clippy.unescape = false }
|
11
|
+
opts.on("-v", "--version", "Version") { $stdout.puts Clippy::VERSION }
|
12
|
+
opts.on("-C", "--clear", "Clear") { exit Clippy.clear ? 0 : 1 }
|
13
13
|
|
14
|
-
opts.on("--copy", "Copy a String or STDIN") do
|
15
|
-
(
|
16
|
-
exit Clippy.copy(ARGV.count == 0 ? ARGF.readlines.join : ARGV.first.dup) ? 0 : 1
|
14
|
+
opts.on("-c", "--copy [STR]", "Copy a String or STDIN") do |str|
|
15
|
+
exit (Clippy.copy(str || ARGF.readlines.join) ? 0 : 1)
|
17
16
|
end
|
18
17
|
end.parse!
|
data/lib/clippy.rb
CHANGED
@@ -7,61 +7,71 @@ if RbConfig::CONFIG["host_os"] =~ /mswin|mingw32/
|
|
7
7
|
end
|
8
8
|
|
9
9
|
module Clippy module_function
|
10
|
+
@unescape = true
|
11
|
+
class << self
|
12
|
+
attr_accessor :unescape
|
13
|
+
end
|
14
|
+
|
10
15
|
class UnknownClipboardError < StandardError
|
11
16
|
def initialize
|
12
17
|
super "Unknown clipboard. Clippy requires xclip, xsel or pbcopy"
|
13
18
|
end
|
14
19
|
end
|
15
20
|
|
21
|
+
def unescape?
|
22
|
+
unescape
|
23
|
+
end
|
24
|
+
|
16
25
|
COMMAND_ARGS = {
|
17
26
|
"xsel" => {
|
18
|
-
|
19
|
-
"stdout" => " -ob"
|
20
|
-
},
|
27
|
+
"stdin".freeze => " -ib",
|
28
|
+
"stdout".freeze => " -ob"
|
29
|
+
}.freeze,
|
21
30
|
|
22
31
|
"windows" => {
|
23
|
-
|
24
|
-
"stdout" => ""
|
25
|
-
},
|
32
|
+
"stdin".freeze => "".freeze,
|
33
|
+
"stdout".freeze => "".freeze
|
34
|
+
}.freeze,
|
26
35
|
|
27
36
|
"pbcopy" => {
|
28
|
-
|
29
|
-
"stdout" => ""
|
30
|
-
},
|
37
|
+
"stdin".freeze => "".freeze,
|
38
|
+
"stdout".freeze => "".freeze
|
39
|
+
}.freeze,
|
31
40
|
|
32
41
|
"xclip" => {
|
33
|
-
|
34
|
-
"stdout" => " -o -selection clipboard"
|
35
|
-
}
|
36
|
-
}
|
42
|
+
"stdin".freeze => " -i -selection clipboard",
|
43
|
+
"stdout".freeze => " -o -selection clipboard"
|
44
|
+
}.freeze
|
45
|
+
}.freeze
|
37
46
|
|
38
47
|
def windows?
|
39
48
|
RbConfig::CONFIG["host_os"] =~ /mswin|mingw32/
|
40
49
|
end
|
41
50
|
|
42
51
|
def copy(data)
|
52
|
+
data = unescape_newline(data) if unescape?
|
43
53
|
data = data.to_s.gsub($/, "\r\n") if $/ != "\r\n"
|
44
|
-
|
54
|
+
run_command("stdin", data)[0] == 0 ? true : false
|
45
55
|
end
|
46
56
|
|
47
57
|
def paste
|
48
58
|
if windows?
|
49
|
-
Win32API.new("user32", "OpenClipboard", "L", "I").call(0)
|
50
|
-
|
51
|
-
Win32API.new("user32", "CloseClipboard", [], "I").call
|
59
|
+
Win32API.new("user32".freeze, "OpenClipboard", "L", "I").call(0)
|
60
|
+
Win32API.new("user32".freeze, "GetClipboardData", "I", "P").call(1) || "".freeze
|
61
|
+
Win32API.new("user32".freeze, "CloseClipboard", [], "I").call
|
52
62
|
else
|
53
|
-
cmd = run_command("stdout")
|
63
|
+
cmd = run_command("stdout".freeze)
|
54
64
|
cmd[0] == 0 ? ((cmd[1].nil? || cmd[1].empty?) ? nil : cmd[1]) : false
|
55
65
|
end
|
56
66
|
end
|
57
67
|
|
58
68
|
def clear
|
59
|
-
(copy("").nil?) ? true : false
|
69
|
+
(copy("".freeze).nil?) ? true : false
|
60
70
|
end
|
61
71
|
|
62
72
|
def binary
|
63
73
|
@binary ||= if windows?
|
64
|
-
"clip"
|
74
|
+
"clip".freeze
|
65
75
|
else
|
66
76
|
case true
|
67
77
|
when system("which xclip > /dev/null 2>&1") then "xclip"
|
@@ -73,9 +83,9 @@ module Clippy module_function
|
|
73
83
|
end
|
74
84
|
end
|
75
85
|
|
76
|
-
def run_command(type, data =
|
86
|
+
def run_command(type, data = "")
|
77
87
|
i, o, e, p = Open3.popen3(binary + COMMAND_ARGS[binary][type])
|
78
|
-
type == "stdin" ? i.
|
88
|
+
type == "stdin" ? i.print(data) : out = o.read.strip
|
79
89
|
|
80
90
|
[i, o, e].each do |m|
|
81
91
|
m.close
|
@@ -86,4 +96,8 @@ module Clippy module_function
|
|
86
96
|
type == "stdin" ? data : out
|
87
97
|
]
|
88
98
|
end
|
99
|
+
|
100
|
+
def unescape_newline(data)
|
101
|
+
data.gsub(/\\n/, "\n").gsub(/\\r/, "\r")
|
102
|
+
end
|
89
103
|
end
|
data/lib/clippy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clippy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordon Bedwell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -87,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
87
|
version: '0'
|
88
88
|
requirements: []
|
89
89
|
rubyforge_project:
|
90
|
-
rubygems_version: 2.
|
90
|
+
rubygems_version: 2.5.0
|
91
91
|
signing_key:
|
92
92
|
specification_version: 4
|
93
93
|
summary: A utility to access the systems clipboard.
|