flyrb 1.0.0.a → 1.0.0.b
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 +23 -5
- data/flyrb.gemspec +4 -4
- data/lib/flyrb/equipper.rb +10 -3
- data/lib/flyrb/gist.rb +51 -0
- data/spec/gist_spec.rb +110 -0
- data/spec/spec_helper.rb +3 -0
- metadata +49 -24
- data/Manifest.txt +0 -7
data/README
CHANGED
@@ -4,11 +4,11 @@ previously utility_belt by Giles Bowkett (and many others): http://utilitybelt.r
|
|
4
4
|
|
5
5
|
== Why Hijack The Project?
|
6
6
|
|
7
|
-
Giles isn't maintaining it anymore and it didn't work with Ruby 1.9. Since I depend on the library quite a bit, I've decided to maintain a fork myself and others.
|
7
|
+
Giles isn't maintaining it anymore and it didn't work with Ruby 1.9. Since I depend on the library quite a bit, I've decided to maintain a fork for myself and others.
|
8
8
|
|
9
9
|
== Why Rename It?
|
10
10
|
|
11
|
-
Well Giles owns the namespace on Gemcutter and various other folks are maintaining their own forks. I think it'll be less confusing to simply leave utility_belt in 1.8 land and move forward with
|
11
|
+
Well Giles owns the namespace on Gemcutter and various other folks are maintaining their own forks. I think it'll be less confusing to simply leave utility_belt in 1.8 land and move forward with flyrb in 1.9.
|
12
12
|
|
13
13
|
== DESCRIPTION
|
14
14
|
|
@@ -24,6 +24,7 @@ sudo gem install flyrb
|
|
24
24
|
|
25
25
|
* Interactively edit IRB code in your preferred text editor
|
26
26
|
* Read from and write to OS X clipboard
|
27
|
+
* Gist your code with one command
|
27
28
|
* Post your code to Pastie with one command (OS X only)
|
28
29
|
* Kick-ass Unix-style history buffer
|
29
30
|
* Write command history to file or vi
|
@@ -79,7 +80,7 @@ or
|
|
79
80
|
|
80
81
|
If you're wondering why the method name is so ridiculously long, there's a story there:
|
81
82
|
|
82
|
-
http://gilesbowkett.blogspot.com/2007/12/
|
83
|
+
http://gilesbowkett.blogspot.com/2007/12/utility-belt-vs-rails.html
|
83
84
|
|
84
85
|
== Read from and write to OS X or Windows clipboard
|
85
86
|
|
@@ -93,9 +94,25 @@ To write:
|
|
93
94
|
|
94
95
|
Clipboard.write("something")
|
95
96
|
|
97
|
+
== Gist your code
|
98
|
+
|
99
|
+
You must first equip Flyrb with gist in your .irbrc:
|
100
|
+
|
101
|
+
Flyrb.equip(:gist)
|
102
|
+
|
103
|
+
This line will also automatically equip the Clipboard, which is required to use gist.
|
104
|
+
|
105
|
+
First copy come code into your clipboard, or put it there with the Clipboard.write() class method. Then use the command:
|
106
|
+
|
107
|
+
gist
|
108
|
+
|
109
|
+
Note that this method currently also sets the gist filename to fly.rb which triggers Ruby syntax highlighting in your gist. The optional second argument to gist is a filename which GitHub will interpret for syntax highlighting.
|
110
|
+
|
111
|
+
gist 'PS1=\[\033[0;36m\]\w\[\033[0;33m\]$(parse_git_branch)\[\033[0;36m\] $> \[\033[0;37m\]', ".profile"
|
112
|
+
|
96
113
|
== Post your code to Pastie with one command (OS X and Windows only)
|
97
114
|
|
98
|
-
You must first equip
|
115
|
+
You must first equip Flyrb with pastie in your .irbrc:
|
99
116
|
|
100
117
|
Flyrb.equip(:pastie)
|
101
118
|
|
@@ -327,7 +344,8 @@ Because life is too short to type whole words.
|
|
327
344
|
|
328
345
|
(The MIT License)
|
329
346
|
|
330
|
-
Copyright (c)
|
347
|
+
Copyright (c) 2010 John Trupiano
|
348
|
+
Portions Copyright (c) 2006-2007 Giles Bowkett
|
331
349
|
Portions Copyright (c) 2006-2007 Ben Bleything
|
332
350
|
Portions Copyright (c) 2006-2007 Reginald Braithwaite
|
333
351
|
Portions Copyright (c) 2006-2007 Gregory Brown
|
data/flyrb.gemspec
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "flyrb"
|
3
|
-
s.version = "1.0.0.
|
3
|
+
s.version = "1.0.0.b"
|
4
4
|
s.author = "John Trupiano"
|
5
5
|
s.email = "jtrupiano@gmail.com"
|
6
6
|
s.homepage = "http://github.com/jtrupiano/flyrb"
|
7
7
|
s.rubyforge_project = "flyrb"
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.summary = "A grab-bag of IRB power user madness (originaly Giles Bowkett's
|
10
|
-
s.files = ["bin", "bin/amazon", "bin/google", "bin/pastie", "History.txt", "html", "html/andreas00.css", "html/authorship.html", "html/bg.gif", "html/front.jpg", "html/index.html", "html/menubg.gif", "html/menubg2.gif", "html/test.jpg", "html/usage.html", "lib", "lib/flyrb", "lib/flyrb/amazon_upload_shortcut.rb", "lib/flyrb/clipboard.rb", "lib/flyrb/command_history.rb", "lib/flyrb/convertable_to_file.rb", "lib/flyrb/equipper.rb", "lib/flyrb/google.rb", "lib/flyrb/hash_math.rb", "lib/flyrb/interactive_editor.rb", "lib/flyrb/irb_options.rb", "lib/flyrb/irb_verbosity_control.rb", "lib/flyrb/is_an.rb", "lib/flyrb/language_greps.rb", "lib/flyrb/not.rb", "lib/flyrb/pastie.rb", "lib/flyrb/pipe.rb", "lib/flyrb/rails_finder_shortcut.rb", "lib/flyrb/rails_verbosity_control.rb", "lib/flyrb/string_to_proc.rb", "lib/flyrb/symbol_to_proc.rb", "lib/flyrb/wirble.rb", "lib/flyrb/with.rb", "lib/flyrb.rb", "
|
9
|
+
s.summary = "A grab-bag of IRB power user madness (originaly Giles Bowkett's utility_belt)."
|
10
|
+
s.files = ["bin", "bin/amazon", "bin/google", "bin/pastie", "History.txt", "html", "html/andreas00.css", "html/authorship.html", "html/bg.gif", "html/front.jpg", "html/index.html", "html/menubg.gif", "html/menubg2.gif", "html/test.jpg", "html/usage.html", "lib", "lib/flyrb", "lib/flyrb/amazon_upload_shortcut.rb", "lib/flyrb/clipboard.rb", "lib/flyrb/command_history.rb", "lib/flyrb/convertable_to_file.rb", "lib/flyrb/equipper.rb", "lib/flyrb/google.rb", "lib/flyrb/hash_math.rb", "lib/flyrb/interactive_editor.rb", "lib/flyrb/irb_options.rb", "lib/flyrb/irb_verbosity_control.rb", "lib/flyrb/is_an.rb", "lib/flyrb/gist.rb", "lib/flyrb/language_greps.rb", "lib/flyrb/not.rb", "lib/flyrb/pastie.rb", "lib/flyrb/pipe.rb", "lib/flyrb/rails_finder_shortcut.rb", "lib/flyrb/rails_verbosity_control.rb", "lib/flyrb/string_to_proc.rb", "lib/flyrb/symbol_to_proc.rb", "lib/flyrb/wirble.rb", "lib/flyrb/with.rb", "lib/flyrb.rb", "README", "spec", "spec/convertable_to_file_spec.rb", "spec/equipper_spec.rb", "spec/gist_spec.rb", "spec/hash_math_spec.rb", "spec/interactive_editor_spec.rb", "spec/language_greps_spec.rb", "spec/pastie_spec.rb", "spec/pipe_spec.rb", "spec/spec_helper.rb", "spec/string_to_proc_spec.rb", "spec/flyrb_spec.rb", "flyrb.gemspec"]
|
11
11
|
%w{amazon google pastie}.each do |command_line_utility|
|
12
12
|
s.executables << command_line_utility
|
13
13
|
end
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.has_rdoc = true
|
17
17
|
s.extra_rdoc_files = ["README"]
|
18
18
|
s.add_dependency("activesupport")
|
19
|
-
s.add_dependency("wirble", ">= 0.1.
|
19
|
+
s.add_dependency("wirble", ">= 0.1.3")
|
20
20
|
s.add_dependency("aws-s3", ">= 0.4.0")
|
21
21
|
s.add_dependency("Platform", ">= 0.4.0")
|
22
22
|
end
|
data/lib/flyrb/equipper.rb
CHANGED
@@ -54,12 +54,19 @@ module Flyrb
|
|
54
54
|
args.each do |arg|
|
55
55
|
gadget = arg.to_s
|
56
56
|
|
57
|
-
|
58
|
-
|
57
|
+
if GADGETS.include? gadget
|
58
|
+
gadgets_to_equip << gadget
|
59
|
+
else
|
60
|
+
# Don't silently ignore unkown gadgets
|
61
|
+
puts "Failed to find gadget #{gadget}, ignoring"
|
62
|
+
end
|
59
63
|
end
|
60
64
|
end
|
61
65
|
|
62
|
-
gadgets_to_equip.each{|gadget|
|
66
|
+
gadgets_to_equip.each{|gadget|
|
67
|
+
puts "enabling #{gadget}"
|
68
|
+
require "flyrb/#{gadget}"
|
69
|
+
}
|
63
70
|
|
64
71
|
@equipped ||= true
|
65
72
|
end
|
data/lib/flyrb/gist.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'flyrb'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'net/http'
|
4
|
+
|
5
|
+
Flyrb.equip(:clipboard)
|
6
|
+
|
7
|
+
module Flyrb
|
8
|
+
module Gist
|
9
|
+
def gist(content = nil, filename = nil)
|
10
|
+
content ||= Clipboard.read if Clipboard.available?
|
11
|
+
filename ||= "fly.rb"
|
12
|
+
|
13
|
+
url = URI.parse('http://gist.github.com/gists')
|
14
|
+
req = Net::HTTP.post_form(url, data(filename, "rb", content))
|
15
|
+
|
16
|
+
gist_url = req['Location']
|
17
|
+
Clipboard.write(gist_url) if Clipboard.available?
|
18
|
+
open(gist_url)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def open(url)
|
23
|
+
case Platform::IMPL
|
24
|
+
when :macosx
|
25
|
+
Kernel.system("open #{url}")
|
26
|
+
when :mswin
|
27
|
+
pastie_url = url.chop if url[-1].chr == "\000"
|
28
|
+
Kernel.system("start #{url}")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def data(filename, ext, content)
|
33
|
+
{
|
34
|
+
:'file_ext[gistfile1]' => ext,
|
35
|
+
:'file_name[gistfile1]' => filename,
|
36
|
+
:'file_contents[gistfile1]' => content
|
37
|
+
}.merge(auth)
|
38
|
+
end
|
39
|
+
|
40
|
+
def auth
|
41
|
+
user = `git config --global github.user`.strip
|
42
|
+
token = `git config --global github.token`.strip
|
43
|
+
|
44
|
+
user.empty? ? {} : { :login => user, :token => token }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class Object
|
50
|
+
include Flyrb::Gist
|
51
|
+
end if Object.const_defined? :IRB
|
data/spec/gist_spec.rb
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
+
|
3
|
+
Platform = Module.new unless Object.const_defined?('Platform')
|
4
|
+
Net = Module.new unless Object.const_defined?('Net')
|
5
|
+
|
6
|
+
require 'flyrb'
|
7
|
+
Flyrb.equip(:gist)
|
8
|
+
include Flyrb::Gist
|
9
|
+
# don't go to the filesystem for the git credentials
|
10
|
+
def auth; {}; end
|
11
|
+
|
12
|
+
Clipboard = Flyrb::Clipboard unless Object.const_defined?('Clipboard')
|
13
|
+
|
14
|
+
describe "gist being called" do
|
15
|
+
|
16
|
+
before(:all) do
|
17
|
+
Net::HTTP = mock('HTTP') unless Net.const_defined?('HTTP')
|
18
|
+
URI = mock('URI') unless Object.const_defined?('URI')
|
19
|
+
Clipboard = mock('clipboard') unless Object.const_defined?('Clipboard')
|
20
|
+
end
|
21
|
+
|
22
|
+
before(:each) do
|
23
|
+
@page = mock('page')
|
24
|
+
@page.stub!(:[]).with('Location').and_return('foo.html')
|
25
|
+
Net::HTTP.stub!(:post_form).and_return(@page)
|
26
|
+
URI.stub!(:parse)
|
27
|
+
Clipboard.stub!(:read)
|
28
|
+
Clipboard.stub!(:write)
|
29
|
+
Kernel.stub!(:system)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should be available in global namespace and not blow-up with default stub/mocking" do
|
33
|
+
gist
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should uri-parse the gist uri" do
|
37
|
+
URI.should_receive(:parse).with("http://gist.github.com/gists")
|
38
|
+
gist
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should pass the uri-parsed result into the post" do
|
42
|
+
URI.should_receive(:parse).and_return('a_uri_object')
|
43
|
+
Net::HTTP.should_receive(:post_form).with('a_uri_object', anything()).and_return(@page)
|
44
|
+
gist
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should call system open on the gist return" do
|
48
|
+
@page.should_receive(:[]).with('Location').and_return('returned_url')
|
49
|
+
case Platform::IMPL
|
50
|
+
when :macosx
|
51
|
+
Kernel.should_receive(:system).with("open returned_url")
|
52
|
+
when :mswin
|
53
|
+
Kernel.should_receive(:system).with("start returned_url")
|
54
|
+
end
|
55
|
+
gist
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should write resulting url into the clipboard" do
|
59
|
+
@page.should_receive(:[]).and_return('returned_url')
|
60
|
+
Clipboard.should_receive(:write).with('returned_url')
|
61
|
+
gist
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "with no parameter it uses the clipboard" do
|
65
|
+
it "should read the clipboard" do
|
66
|
+
Clipboard.should_receive(:read)
|
67
|
+
gist
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should put the clipboard results in the post to gist" do
|
71
|
+
Clipboard.should_receive(:read).and_return('bar')
|
72
|
+
Net::HTTP.should_receive(:post_form).with(anything(), {
|
73
|
+
:"file_ext[gistfile1]" => "rb",
|
74
|
+
:"file_name[gistfile1]" => "fly.rb",
|
75
|
+
:"file_contents[gistfile1]" => 'bar'
|
76
|
+
}).and_return(@page)
|
77
|
+
gist
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "with a parameter instead" do
|
82
|
+
#TODO: windows/linux safer now, since no clipboard functionality?
|
83
|
+
it "should not even read the clipboard" do
|
84
|
+
Clipboard.should_not_receive(:read)
|
85
|
+
gist "baz"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should pass in the parameter instead" do
|
89
|
+
Net::HTTP.should_receive(:post_form).with(anything(), {
|
90
|
+
:"file_ext[gistfile1]" => "rb",
|
91
|
+
:"file_name[gistfile1]" => "fly.rb",
|
92
|
+
:"file_contents[gistfile1]" => 'baz',
|
93
|
+
}).and_return(@page)
|
94
|
+
|
95
|
+
gist "baz"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "with a parameter and a filename" do
|
100
|
+
it "should set the filename" do
|
101
|
+
Net::HTTP.should_receive(:post_form).with(anything(), {
|
102
|
+
:"file_ext[gistfile1]" => "rb",
|
103
|
+
:"file_name[gistfile1]" => "lisp.el",
|
104
|
+
:"file_contents[gistfile1]" => 'foo',
|
105
|
+
}).and_return(@page)
|
106
|
+
|
107
|
+
gist "foo", "lisp.el"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flyrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: true
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- b
|
10
|
+
version: 1.0.0.b
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- John Trupiano
|
@@ -9,49 +15,63 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-02-
|
18
|
+
date: 2010-02-28 00:00:00 -05:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: activesupport
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
25
|
requirements:
|
21
26
|
- - ">="
|
22
27
|
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
23
30
|
version: "0"
|
24
|
-
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
25
33
|
- !ruby/object:Gem::Dependency
|
26
34
|
name: wirble
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
37
|
requirements:
|
31
38
|
- - ">="
|
32
39
|
- !ruby/object:Gem::Version
|
33
|
-
|
34
|
-
|
40
|
+
segments:
|
41
|
+
- 0
|
42
|
+
- 1
|
43
|
+
- 3
|
44
|
+
version: 0.1.3
|
45
|
+
type: :runtime
|
46
|
+
version_requirements: *id002
|
35
47
|
- !ruby/object:Gem::Dependency
|
36
48
|
name: aws-s3
|
37
|
-
|
38
|
-
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
prerelease: false
|
50
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
51
|
requirements:
|
41
52
|
- - ">="
|
42
53
|
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
- 4
|
57
|
+
- 0
|
43
58
|
version: 0.4.0
|
44
|
-
|
59
|
+
type: :runtime
|
60
|
+
version_requirements: *id003
|
45
61
|
- !ruby/object:Gem::Dependency
|
46
62
|
name: Platform
|
47
|
-
|
48
|
-
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
prerelease: false
|
64
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
65
|
requirements:
|
51
66
|
- - ">="
|
52
67
|
- !ruby/object:Gem::Version
|
68
|
+
segments:
|
69
|
+
- 0
|
70
|
+
- 4
|
71
|
+
- 0
|
53
72
|
version: 0.4.0
|
54
|
-
|
73
|
+
type: :runtime
|
74
|
+
version_requirements: *id004
|
55
75
|
description:
|
56
76
|
email: jtrupiano@gmail.com
|
57
77
|
executables:
|
@@ -87,6 +107,7 @@ files:
|
|
87
107
|
- lib/flyrb/irb_options.rb
|
88
108
|
- lib/flyrb/irb_verbosity_control.rb
|
89
109
|
- lib/flyrb/is_an.rb
|
110
|
+
- lib/flyrb/gist.rb
|
90
111
|
- lib/flyrb/language_greps.rb
|
91
112
|
- lib/flyrb/not.rb
|
92
113
|
- lib/flyrb/pastie.rb
|
@@ -98,10 +119,10 @@ files:
|
|
98
119
|
- lib/flyrb/wirble.rb
|
99
120
|
- lib/flyrb/with.rb
|
100
121
|
- lib/flyrb.rb
|
101
|
-
- Manifest.txt
|
102
122
|
- README
|
103
123
|
- spec/convertable_to_file_spec.rb
|
104
124
|
- spec/equipper_spec.rb
|
125
|
+
- spec/gist_spec.rb
|
105
126
|
- spec/hash_math_spec.rb
|
106
127
|
- spec/interactive_editor_spec.rb
|
107
128
|
- spec/language_greps_spec.rb
|
@@ -124,20 +145,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
124
145
|
requirements:
|
125
146
|
- - ">="
|
126
147
|
- !ruby/object:Gem::Version
|
148
|
+
segments:
|
149
|
+
- 0
|
127
150
|
version: "0"
|
128
|
-
version:
|
129
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
152
|
requirements:
|
131
153
|
- - ">"
|
132
154
|
- !ruby/object:Gem::Version
|
155
|
+
segments:
|
156
|
+
- 1
|
157
|
+
- 3
|
158
|
+
- 1
|
133
159
|
version: 1.3.1
|
134
|
-
version:
|
135
160
|
requirements: []
|
136
161
|
|
137
162
|
rubyforge_project: flyrb
|
138
|
-
rubygems_version: 1.3.
|
163
|
+
rubygems_version: 1.3.6
|
139
164
|
signing_key:
|
140
165
|
specification_version: 3
|
141
|
-
summary: A grab-bag of IRB power user madness (originaly Giles Bowkett's
|
166
|
+
summary: A grab-bag of IRB power user madness (originaly Giles Bowkett's utility_belt).
|
142
167
|
test_files:
|
143
168
|
- spec/flyrb_spec.rb
|