clippy 0.2.4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +18 -0
- data/License +1 -1
- data/Rakefile +4 -9
- data/Readme.md +28 -22
- data/bin/clippy +14 -19
- data/clippy.gemspec +22 -0
- data/fix_git.sh +11 -0
- data/lib/clippy.rb +148 -86
- data/tests/clippy.rb +60 -0
- metadata +10 -44
- data/changelog.md +0 -9
- data/features/clippy.feature +0 -8
- data/features/step_definitions/clippy_steps.rb +0 -10
- data/features/support/global.rb +0 -9
data/Gemfile.lock
ADDED
data/License
CHANGED
data/Rakefile
CHANGED
@@ -1,19 +1,14 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rubygems/package_task"
|
2
|
+
require "rake/testtask"
|
3
3
|
|
4
4
|
task :default => [:test]
|
5
|
+
task :spec => :test
|
5
6
|
|
6
7
|
Rake::TestTask.new do |tfile|
|
7
8
|
tfile.verbose = true
|
8
9
|
tfile.pattern = "tests/**/*.rb"
|
9
10
|
end
|
10
11
|
|
11
|
-
|
12
|
-
require 'cucumber'
|
13
|
-
require 'cucumber/rake/task'
|
14
|
-
Cucumber::Rake::Task.new(:features)
|
15
|
-
end
|
16
|
-
|
17
|
-
Gem::PackageTask.new(eval(IO.read('clippy.gemspec'))) do |pkg|
|
12
|
+
Gem::PackageTask.new(eval(IO.read("clippy.gemspec"))) do |pkg|
|
18
13
|
pkg.need_tar, pkg.need_zip = true
|
19
14
|
end
|
data/Readme.md
CHANGED
@@ -1,33 +1,39 @@
|
|
1
1
|
Clippy is a cross-platform clipboard utility and script for Ruby.
|
2
2
|
|
3
|
+
[![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/envygeeks/clippy)
|
4
|
+
|
3
5
|
---
|
4
6
|
* Requirements:
|
5
|
-
* Ruby1.9+ or
|
6
|
-
*
|
7
|
-
*
|
7
|
+
* Ruby1.9+ or JRuby in 1.9+
|
8
|
+
* Any Linux distro with xsel or xclip.
|
9
|
+
* Any OS X version that supports pbcopy.
|
10
|
+
* At least Windows Vista if you are on Windows.
|
8
11
|
* Development:
|
9
|
-
* Cucumber
|
10
12
|
* Rake
|
11
13
|
* Minitest
|
12
|
-
* RSPEC-Expectations
|
13
14
|
|
14
|
-
|
15
|
+
---
|
16
|
+
Examples:
|
17
|
+
|
18
|
+
```bash
|
19
|
+
clippy --copy "#1"
|
20
|
+
clippy --paste
|
21
|
+
echo "#2" |clippy --copy
|
22
|
+
clippy --copy < "file#3.txt"
|
23
|
+
```
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
require 'clippy'
|
27
|
+
Clippy.copy('#1')
|
28
|
+
Clippy.paste and Clippy.clear
|
29
|
+
```
|
15
30
|
|
16
|
-
# Shell (Linux and Windows)
|
17
|
-
clippy --copy '#1'
|
18
|
-
echo '#2' |clippy --copy
|
19
|
-
clipy --copy < 'file#3.txt'
|
20
|
-
|
21
|
-
# Ruby1.8+
|
22
|
-
require 'clippy'
|
23
|
-
Clippy.copy('#1')
|
24
|
-
Clippy.paste and Clippy.clear
|
25
|
-
<br />
|
26
31
|
<pre>
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
Clippy v1.0.0 by Envygeeks
|
33
|
+
--no-encoding Encoding
|
34
|
+
--paste Paste
|
35
|
+
--help This
|
36
|
+
--clear Clear
|
37
|
+
--copy Copy
|
38
|
+
--version Version
|
33
39
|
</pre>
|
data/bin/clippy
CHANGED
@@ -1,34 +1,29 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
$:.unshift('../lib')
|
3
|
-
require 'optparse'
|
4
|
-
require 'clippy'
|
5
2
|
|
6
|
-
|
7
|
-
|
3
|
+
$:.unshift(File.expand_path("../../lib", __FILE__))
|
4
|
+
require "optparse"
|
5
|
+
require "clippy"
|
6
|
+
|
8
7
|
do_return = nil
|
9
8
|
did_cmd = nil
|
10
9
|
OptionParser.new do |opts|
|
11
10
|
opts.banner = "Clippy v#{Clippy.version} by Envygeeks"
|
12
|
-
opts.on(
|
13
|
-
opts.on(
|
14
|
-
opts.on(
|
15
|
-
opts.on(
|
11
|
+
opts.on("--no-encoding", "Encoding") { Clippy.encode = false }
|
12
|
+
opts.on("--paste", "Paste") { do_return = Clippy.paste }
|
13
|
+
opts.on("--help", "This") { do_return = opts }
|
14
|
+
opts.on("--clear", "Clear") { did_cmd = Clippy.clear }
|
16
15
|
|
17
|
-
opts.on(
|
18
|
-
|
19
|
-
|
20
|
-
else
|
21
|
-
if ARGV.count > 1
|
22
|
-
raise(RuntimeError, 'More than one arg.', 'Clippy')
|
23
|
-
else
|
24
|
-
text = ARGV.first.dup
|
25
|
-
end
|
16
|
+
opts.on("--copy", "Copy") do
|
17
|
+
if ARGV.count > 1
|
18
|
+
raise RuntimeError, "More than one arg is not allowable.", "Clippy"
|
26
19
|
end
|
27
20
|
|
21
|
+
text = ARGF.readlines.join if ARGV.count == 0
|
22
|
+
text = ARGV.first.dup if ARGV.count == 1
|
28
23
|
did_cmd = Clippy.copy(text)
|
29
24
|
end
|
30
25
|
|
31
|
-
opts.on(
|
26
|
+
opts.on("--version", "version") { do_return = Clippy.version }
|
32
27
|
end.parse!
|
33
28
|
|
34
29
|
if do_return.nil? and did_cmd.nil?
|
data/clippy.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
$:.unshift(File.expand_path("../lib", __FILE__))
|
2
|
+
require "clippy"
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.license = "MIT"
|
6
|
+
spec.name = "clippy"
|
7
|
+
spec.has_rdoc = false
|
8
|
+
spec.version = Clippy.version
|
9
|
+
spec.require_paths = ["lib"]
|
10
|
+
spec.executables = ["clippy"]
|
11
|
+
spec.add_development_dependency("minitest")
|
12
|
+
spec.add_development_dependency("rake")
|
13
|
+
spec.authors = ["Jordon Bedwell"]
|
14
|
+
spec.email = ["jordon@envygeeks.com"]
|
15
|
+
spec.homepage = "https://github.com/envygeeks/clippy"
|
16
|
+
spec.summary = "A utility to access the systems clipboard."
|
17
|
+
spec.description = "A utility to access the systems clipboard."
|
18
|
+
spec.files = Dir["**/*"]
|
19
|
+
if RUBY_PLATFORM =~ /mswin/
|
20
|
+
spec.required_ruby_version = '>= 1.9.1'
|
21
|
+
end
|
22
|
+
end
|
data/fix_git.sh
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
git filter-branch --commit-filter '
|
2
|
+
if [ "$GIT_AUTHOR_EMAIL" = "jordon@gryffindor.(none)" ];
|
3
|
+
then
|
4
|
+
GIT_COMMITTER_NAME="Jordon Bedwell";
|
5
|
+
GIT_AUTHOR_NAME="Jordon Bedwell";
|
6
|
+
GIT_COMMITTER_EMAIL="jordon@envygeeks.com";
|
7
|
+
GIT_AUTHOR_EMAIL="jordon@envygeeks.com";
|
8
|
+
git commit-tree "$@";
|
9
|
+
else
|
10
|
+
git commit-tree "$@";
|
11
|
+
fi' HEAD
|
data/lib/clippy.rb
CHANGED
@@ -1,9 +1,21 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
|
1
|
+
require "rbconfig"
|
2
|
+
|
3
|
+
if RbConfig::CONFIG["host_os"] !~ /mswin|mingw32/
|
4
|
+
require "open3"
|
4
5
|
else
|
5
|
-
require
|
6
|
-
require
|
6
|
+
require "Win32API"
|
7
|
+
require "tempfile"
|
8
|
+
end
|
9
|
+
|
10
|
+
class Object
|
11
|
+
##
|
12
|
+
# ---
|
13
|
+
# Hood jacked from Rails.
|
14
|
+
##
|
15
|
+
|
16
|
+
def blank?
|
17
|
+
(respond_to?(:empty?)) ? (empty?) : (!self)
|
18
|
+
end
|
7
19
|
end
|
8
20
|
|
9
21
|
class Clippy
|
@@ -15,34 +27,42 @@ class Clippy
|
|
15
27
|
end
|
16
28
|
|
17
29
|
class << self
|
18
|
-
|
19
|
-
##
|
20
|
-
# Version.
|
30
|
+
VERSION = "1.0.0"
|
21
31
|
def version
|
22
|
-
|
32
|
+
VERSION
|
23
33
|
end
|
24
34
|
|
25
|
-
|
26
|
-
|
35
|
+
##
|
36
|
+
# ---
|
37
|
+
# Doesn't work on Windows.
|
38
|
+
##
|
39
|
+
|
40
|
+
def binary_exist?(bin = nil)
|
41
|
+
if bin
|
42
|
+
system("which #{bin} > /dev/null 2>&1")
|
43
|
+
end
|
27
44
|
end
|
28
45
|
|
29
46
|
def encode=(value)
|
30
|
-
|
47
|
+
if [TrueClass, FalseClass].include?(value.class)
|
48
|
+
@@encode = value
|
49
|
+
end
|
31
50
|
end
|
32
51
|
|
33
|
-
##
|
34
|
-
# Copy
|
35
52
|
def copy(data)
|
36
|
-
# Just convert it ourselves right now.....
|
37
|
-
data = data.to_s unless data.is_a?(String)
|
38
|
-
|
39
53
|
##
|
40
|
-
#
|
54
|
+
# ---
|
55
|
+
# Always convert to a string and convert \n to \r\n because shit like
|
56
|
+
# Pidgin, Empathy, aMSN and other fucking clients have no idea what the
|
57
|
+
# hell \n is for, that or they just ignore it like jackasses, jackasses.
|
58
|
+
|
59
|
+
data = data.to_s unless data.is_a?(String)
|
41
60
|
data.gsub!(/\n/, "\r\n")
|
42
|
-
|
43
|
-
|
61
|
+
|
62
|
+
if RbConfig::CONFIG["host_os"] =~ /mswin|mingw32/
|
63
|
+
if system("clip /? > NUL")
|
44
64
|
begin
|
45
|
-
tmpfile = Tempfile.new(
|
65
|
+
tmpfile = Tempfile.new("clippy")
|
46
66
|
tmpfile.write(data)
|
47
67
|
tmpfile.flush
|
48
68
|
system("clip < #{tmpfile.path}")
|
@@ -50,105 +70,147 @@ class Clippy
|
|
50
70
|
tmpfile.close(true)
|
51
71
|
end
|
52
72
|
else
|
53
|
-
raise(UnsupportedOS,
|
73
|
+
raise(UnsupportedOS, "Your Windows version is too old.", "Clippy")
|
54
74
|
end
|
55
75
|
else
|
76
|
+
status = 0
|
56
77
|
case true
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
78
|
+
##
|
79
|
+
# ---
|
80
|
+
# xsel is a Linux utility.
|
81
|
+
# apt-get install xsel.
|
82
|
+
|
83
|
+
when binary_exist?("xsel")
|
84
|
+
["-p", "-b", "-s"].each do |opt|
|
85
|
+
Open3.popen3("xsel -i #{opt}") do |stdin, _, _, thread|
|
86
|
+
stdin << data
|
87
|
+
stdin.close
|
88
|
+
status = thread.value
|
89
|
+
end
|
61
90
|
end
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
91
|
+
|
92
|
+
##
|
93
|
+
# ---
|
94
|
+
# pbpaste is for Mac's though it could change.
|
95
|
+
# I don't know if it has multiple-boards.
|
96
|
+
##
|
97
|
+
|
98
|
+
when binary_exist?("pbcopy")
|
99
|
+
Open3.popen3("pbcopy") do |stdin, _, _, thread|
|
70
100
|
stdin << data
|
101
|
+
stdin.close
|
102
|
+
status = thread.value
|
103
|
+
end
|
104
|
+
|
105
|
+
##
|
106
|
+
# ---
|
107
|
+
# xclip is a Linux utitily.
|
108
|
+
# apt-get install xclip.
|
109
|
+
##
|
110
|
+
|
111
|
+
when binary_exist?("xclip")
|
112
|
+
["primary", "secondary", "clipboard"].each do |opt|
|
113
|
+
Open3.popen3("xclip -i -selection #{opt}") do
|
114
|
+
|stdin, _, _, thread|
|
115
|
+
stdin << data
|
116
|
+
stdin.close
|
117
|
+
status = thread.value
|
118
|
+
end
|
71
119
|
end
|
72
|
-
end
|
73
120
|
else
|
74
|
-
raise(UnknownClipboard,
|
121
|
+
raise(UnknownClipboard, "Clippy requires xsel, xclip or pbcopy.")
|
75
122
|
end
|
76
123
|
end
|
77
124
|
|
78
|
-
(
|
125
|
+
(status != 0) ? (false) : (data)
|
79
126
|
end
|
80
127
|
|
81
|
-
##
|
82
|
-
# Paste
|
83
128
|
def paste(encoding = nil, which = nil)
|
84
|
-
if encoding
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
92
|
-
else
|
93
|
-
encoding = nil
|
94
|
-
warn('Encoding library wasn\'t found, skipping the encode') unless !@@encode
|
129
|
+
which = "clipboard" if encoding.blank? && which.blank?
|
130
|
+
if %w(clipboard primary secondary).include?(encoding)
|
131
|
+
which, encoding = encoding, nil
|
132
|
+
else
|
133
|
+
if encoding && @@encode && defined?(Encoding)
|
134
|
+
unless Encoding.list.map(&:to_s).include?(encoding)
|
135
|
+
raise InvalidEncoding, "Unsupported encoding selected", "Clippy"
|
95
136
|
end
|
96
137
|
end
|
97
138
|
end
|
98
139
|
|
99
|
-
if RbConfig::CONFIG[
|
100
|
-
Win32API.new(
|
101
|
-
data = Win32API.new(
|
102
|
-
Win32API.new(
|
140
|
+
if RbConfig::CONFIG["host_os"] =~ /mswin|mingw32/
|
141
|
+
Win32API.new("user32", "OpenClipboard", "L", "I").call(0)
|
142
|
+
data = Win32API.new("user32", "GetClipboardData", "I", "P").call(1) || ""
|
143
|
+
Win32API.new("user32", "CloseClipboard", [], "I").call
|
103
144
|
else
|
104
145
|
case true
|
105
|
-
|
106
|
-
|
146
|
+
##
|
147
|
+
# ---
|
148
|
+
# xsel is a Linux utility.
|
149
|
+
# apt-get install xsel.
|
150
|
+
|
151
|
+
when binary_exist?("xsel")
|
152
|
+
cmd, data = "xsel -o", ""
|
153
|
+
|
154
|
+
case which
|
155
|
+
when "clipboard" then cmd+= " -b"
|
156
|
+
when "primary" then cmd+= " -p"
|
157
|
+
when "secondary" then cmd+= " -s"
|
158
|
+
end
|
107
159
|
|
108
|
-
|
109
|
-
|
110
|
-
when 'primary' then cmd+= ' -p'
|
111
|
-
when 'secondary' then cmd+= ' -s'
|
112
|
-
end
|
160
|
+
Open3.popen3(cmd) { |_, stdout, _|
|
161
|
+
data = stdout.read }
|
113
162
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
data = stdout.read || ''
|
120
|
-
end
|
121
|
-
when binary_exist?('xclip')
|
122
|
-
cmd = 'xclip -o'
|
163
|
+
##
|
164
|
+
# ---
|
165
|
+
# pbpaste is for Mac's though it could change.
|
166
|
+
# I don't know if it has multiple-boards.
|
167
|
+
##
|
123
168
|
|
124
|
-
|
125
|
-
|
126
|
-
when 'primary' then cmd+= ' primary'
|
127
|
-
when 'secondary' then cmd+= ' secondary'
|
128
|
-
end
|
169
|
+
when binary_exist?("pbpaste")
|
170
|
+
data = ""
|
129
171
|
|
130
|
-
|
131
|
-
|
132
|
-
|
172
|
+
Open3.popen("pbpaste") { |_, stdout, _|
|
173
|
+
data = stdout.read || "" }
|
174
|
+
|
175
|
+
##
|
176
|
+
# ---
|
177
|
+
# xclip is a Linux utitily.
|
178
|
+
# apt-get install xclip.
|
179
|
+
##
|
180
|
+
|
181
|
+
when binary_exist?("xclip")
|
182
|
+
cmd, data = "xclip -o -selection", ""
|
183
|
+
|
184
|
+
case which
|
185
|
+
when "clipboard" then cmd+= " clipboard"
|
186
|
+
when "primary" then cmd+= " primary"
|
187
|
+
when "secondary" then cmd+= " secondary"
|
188
|
+
end
|
189
|
+
|
190
|
+
Open3.popen3(cmd) do |_, stdout, _|
|
191
|
+
data = stdout.read || ""
|
192
|
+
end
|
193
|
+
else
|
194
|
+
raise RuntimeError, "Unable to find a supported clipboard", "Clippy"
|
133
195
|
end
|
134
196
|
end
|
135
197
|
|
136
|
-
if @@encode && defined?(Encoding)
|
198
|
+
if @@encode && defined?(Encoding) && encoding
|
137
199
|
if data.encoding.name != Encoding.default_external
|
138
|
-
data.encode(encoding
|
200
|
+
data.encode(encoding)
|
139
201
|
end
|
140
202
|
end
|
141
203
|
|
142
|
-
(
|
204
|
+
(data.blank?) ? (nil) : (data)
|
143
205
|
end
|
144
206
|
|
145
207
|
def clear
|
146
|
-
if RbConfig::CONFIG[
|
147
|
-
Win32API.new(
|
148
|
-
Win32API.new(
|
149
|
-
Win32API.new(
|
208
|
+
if RbConfig::CONFIG["host_os"] =~ /mswin|mingw32/
|
209
|
+
Win32API.new("user32", "OpenClipboard", "L", "I").call(0)
|
210
|
+
Win32API.new("user32", "EmptyClipboard", [], "I").call
|
211
|
+
Win32API.new("user32", "CloseClipboard", [], "I").call
|
150
212
|
else
|
151
|
-
if copy(
|
213
|
+
if copy("")
|
152
214
|
return true
|
153
215
|
end
|
154
216
|
end
|
data/tests/clippy.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
$:.unshift(File.expand_path("../../lib", __FILE__))
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "minitest/pride"
|
4
|
+
require "minitest/spec"
|
5
|
+
require "clippy"
|
6
|
+
|
7
|
+
describe Clippy do subject { Clippy }
|
8
|
+
it "must have a proper version" do
|
9
|
+
Clippy.version.split(".").delete_if { |val|
|
10
|
+
val =~ /pre\d+/ }.length.must_equal(3)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe ".copy" do
|
14
|
+
it "must be able to copy" do
|
15
|
+
subject.clear.must_equal(true)
|
16
|
+
subject.copy("example").must_equal("example")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "it must copy from the binary" do
|
20
|
+
subject.clear.must_equal(true)
|
21
|
+
data, status = "example", 1
|
22
|
+
Open3.popen3(File.expand_path("../../bin/clippy --copy", __FILE__)) do
|
23
|
+
|stdin, _, _, thread|
|
24
|
+
stdin << data
|
25
|
+
stdin.close
|
26
|
+
status = thread.value
|
27
|
+
end
|
28
|
+
|
29
|
+
status.must_equal(0)
|
30
|
+
subject.paste.must_equal("example")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe ".paste" do
|
35
|
+
it "must be able to paste" do
|
36
|
+
subject.clear.must_equal(true)
|
37
|
+
subject.copy("example")
|
38
|
+
subject.paste.must_equal("example")
|
39
|
+
end
|
40
|
+
|
41
|
+
it "must be able to paste from the binary" do
|
42
|
+
subject.clear.must_equal(true)
|
43
|
+
data, status = "", 1
|
44
|
+
subject.copy("example").must_equal("example")
|
45
|
+
Open3.popen3(File.expand_path("../../bin/clippy --paste", __FILE__)) {
|
46
|
+
|_, stdout, _, thread|
|
47
|
+
data = stdout.read; status = thread.value }
|
48
|
+
|
49
|
+
status.must_equal(0)
|
50
|
+
data.strip.must_equal("example")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe ".clear" do
|
55
|
+
it "should be able to clear the clipboard" do
|
56
|
+
subject.copy("example")
|
57
|
+
subject.clear.must_equal(true)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
metadata
CHANGED
@@ -1,49 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clippy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jordon Bedwell
|
9
|
-
- Nathaniel Davidson
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2012-
|
12
|
+
date: 2012-10-10 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: rspec-expectations
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
|
-
requirements:
|
20
|
-
- - ! '>='
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '0'
|
23
|
-
type: :development
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
|
-
requirements:
|
28
|
-
- - ! '>='
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: '0'
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: rake
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
|
-
requirements:
|
36
|
-
- - ! '>='
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '0'
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
|
-
requirements:
|
44
|
-
- - ! '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '0'
|
47
14
|
- !ruby/object:Gem::Dependency
|
48
15
|
name: minitest
|
49
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,7 +28,7 @@ dependencies:
|
|
61
28
|
- !ruby/object:Gem::Version
|
62
29
|
version: '0'
|
63
30
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
31
|
+
name: rake
|
65
32
|
requirement: !ruby/object:Gem::Requirement
|
66
33
|
none: false
|
67
34
|
requirements:
|
@@ -79,22 +46,21 @@ dependencies:
|
|
79
46
|
description: A utility to access the systems clipboard.
|
80
47
|
email:
|
81
48
|
- jordon@envygeeks.com
|
82
|
-
- nathaniel.davidson@gmail.com
|
83
49
|
executables:
|
84
50
|
- clippy
|
85
51
|
extensions: []
|
86
52
|
extra_rdoc_files: []
|
87
53
|
files:
|
54
|
+
- clippy.gemspec
|
55
|
+
- fix_git.sh
|
88
56
|
- lib/clippy.rb
|
89
|
-
-
|
90
|
-
- features/step_definitions/clippy_steps.rb
|
91
|
-
- features/clippy.feature
|
92
|
-
- features/support/global.rb
|
93
|
-
- Readme.md
|
94
|
-
- License
|
57
|
+
- Gemfile.lock
|
95
58
|
- Rakefile
|
59
|
+
- tests/clippy.rb
|
60
|
+
- Readme.md
|
96
61
|
- Gemfile
|
97
|
-
-
|
62
|
+
- License
|
63
|
+
- bin/clippy
|
98
64
|
homepage: https://github.com/envygeeks/clippy
|
99
65
|
licenses:
|
100
66
|
- MIT
|
data/changelog.md
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
* 0.2.1 and 0.2.2
|
2
|
-
* Fix an issue with '\n$' on Ruby 1.9.3 by removing it.
|
3
|
-
* No longer require open3 for Windows users.
|
4
|
-
* Add an option for users to disable encoding.
|
5
|
-
* Fix an issue with frozen argv by duping.
|
6
|
-
* Micro-optimise the encoding checks a bit.
|
7
|
-
* Update the readme to use Markdown.
|
8
|
-
* Other various fixes that might not be mentioned.
|
9
|
-
* Avoid shitty Gem pkg problems by forcing permissions.
|
data/features/clippy.feature
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
Feature: Clippy
|
2
|
-
Background:
|
3
|
-
Sometimes you would like to copy and paste from a Ruby script. In order to
|
4
|
-
that though we will need a small little class called Clippy that can copy,
|
5
|
-
paste and also clear the clipboard on Windows, Linux and Mac.
|
6
|
-
|
7
|
-
Given Clippy exist and it has a version.
|
8
|
-
Then Copy, Paste and Clear should exist.
|
@@ -1,10 +0,0 @@
|
|
1
|
-
Given 'Clippy exist and it has a version.' do
|
2
|
-
should be_defined Clippy
|
3
|
-
should be_defined Clippy.version
|
4
|
-
end
|
5
|
-
|
6
|
-
Then 'Copy, Paste and Clear should exist.' do
|
7
|
-
[:copy, :paste, :clear].each do |service|
|
8
|
-
true.should == Clippy.respond_to?(service)
|
9
|
-
end
|
10
|
-
end
|