elliottcable-jello 2

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/.manifest ADDED
@@ -0,0 +1,13 @@
1
+ bin/jello
2
+ lib/jello/core_ext/kernel.rb
3
+ lib/jello/logger.rb
4
+ lib/jello/mould.rb
5
+ lib/jello/pasteboard.rb
6
+ lib/jello.rb
7
+ moulds/grabup.rb
8
+ moulds/say.rb
9
+ moulds/shorten.rb
10
+ Rakefile.rb
11
+ README.markdown
12
+ spec/jello_spec.rb
13
+ .manifest
data/README.markdown ADDED
@@ -0,0 +1,73 @@
1
+ Jello
2
+ =====
3
+
4
+ Because everybody likes "paste & jello" sandwiches, right? I know I did when I
5
+ was a kid.
6
+
7
+ Jello is a simple library to watch the OS X pasteboard and do something on
8
+ every paste.
9
+
10
+ require 'jello'
11
+
12
+ Jello::Mould.new do |paste|
13
+ system "say 'You pasted #{paste}'"
14
+ end
15
+
16
+ Jello.start!
17
+
18
+ For example, to watch for URLs copied, and then shorten the URL and replace
19
+ the long URL with the shortened one, write a short mould like the following:
20
+
21
+ require 'open-uri'
22
+ require 'jello'
23
+
24
+ Jello::Mould.new do |paste|
25
+
26
+ if paste =~ %r{}^http://.*}
27
+ uri = $&
28
+ uri.gsub! /#/, '%23'
29
+ unless uri =~ %r{^http://bit.ly}
30
+ shortener = 'http://bit.ly/api?url=' + uri
31
+ open(shortener).gets.chomp
32
+ else
33
+ nil
34
+ end
35
+ end
36
+
37
+ end
38
+
39
+ Jello.start! :verbose => true
40
+
41
+ Moulds can even be stacked:
42
+
43
+ require 'jello'
44
+
45
+ Jello::Mould.new do |paste|
46
+ paste += '123'
47
+ end
48
+
49
+ Jello::Mould.new do |paste|
50
+ paste += '456'
51
+ end
52
+
53
+ Jello.start! :verbose => true
54
+
55
+ Jello also provides a binary - if you have some moulds you use often, you can
56
+ throw them in your `~/.jello/` folder (as .rb files), and then run jello with
57
+ them:
58
+
59
+ # Assuming ~/.jello/ contains foo.rb, bar.rb, and gaz/{one,two}.rb
60
+ $ jello foo bar gaz
61
+ # Now foo.rb, bar.rb, one.rb, and two.rb would be executed on incoming
62
+ # pastes
63
+
64
+ Finally, you can use pasteboards other than the general one (see `man pbcopy`
65
+ for more information about this):
66
+
67
+ require 'jello'
68
+
69
+ Jello::Mould.new do Jello::Pasteboard::Find |paste|
70
+ paste.gsub! /abc/, 'def'
71
+ end
72
+
73
+ Jello.start!
data/Rakefile.rb ADDED
@@ -0,0 +1,138 @@
1
+ ($:.unshift File.expand_path(File.join( File.dirname(__FILE__), 'lib' ))).uniq!
2
+ require 'jello'
3
+
4
+ require 'fileutils'
5
+
6
+ # =======================
7
+ # = Gem packaging tasks =
8
+ # =======================
9
+ begin
10
+ require 'echoe'
11
+
12
+ task :package => :'package:install'
13
+ task :manifest => :'package:manifest'
14
+ namespace :package do
15
+ Echoe.new('jello', Jello::Version) do |g|
16
+ g.project = 'jello'
17
+ g.author = ['elliottcable']
18
+ g.email = ['Jello@elliottcable.com']
19
+ g.summary = 'A library to watch the OS X pasteboard, and process/modify incoming pastes.'
20
+ g.url = 'http://github.com/elliottcable/jello'
21
+ g.development_dependencies = ['echoe >=3.0.1', 'rspec', 'rcov', 'yard', 'stringray']
22
+ g.manifest_name = '.manifest'
23
+ g.ignore_pattern = /^\.git\/|^meta\/|\.gemspec/
24
+ end
25
+
26
+ desc 'tests packaged files to ensure they are all present'
27
+ task :verify => :package do
28
+ # An error message will be displayed if files are missing
29
+ if system %(ruby -e "require 'rubygems'; require 'pkg/jello-#{Jello::Version}/lib/jello'")
30
+ puts "\nThe library files are present"
31
+ end
32
+ end
33
+
34
+ task :copy_gemspec => [:package] do
35
+ pkg = Dir['pkg/*'].select {|dir| File.directory? dir}.last
36
+ mv File.join(pkg, pkg.gsub(/^pkg\//,'').gsub(/\-\d+$/,'.gemspec')), './'
37
+ end
38
+
39
+ desc 'builds a gemspec as GitHub wants it'
40
+ task :gemspec => [:package, :copy_gemspec, :clobber_package]
41
+ end
42
+
43
+ rescue LoadError
44
+ desc 'You need the `echoe` gem to package Jello'
45
+ task :package
46
+ end
47
+
48
+ # =======================
49
+ # = Spec/Coverage tasks =
50
+ # =======================
51
+ begin
52
+ require 'spec'
53
+ require 'rcov'
54
+ require 'spec/rake/spectask'
55
+
56
+ task :default => :'coverage:run'
57
+ task :coverage => :'coverage:run'
58
+ namespace :coverage do
59
+ Spec::Rake::SpecTask.new(:run) do |t|
60
+ t.spec_opts = ["--format", "specdoc"]
61
+ t.spec_opts << "--colour" unless ENV['CI']
62
+ t.spec_files = Dir['spec/**/*_spec.rb'].sort
63
+ t.libs = ['lib']
64
+ t.rcov = true
65
+ t.rcov_opts = [ '--include-file', '"^lib"', '--exclude-only', '".*"']
66
+ t.rcov_dir = File.join('meta', 'coverage')
67
+ end
68
+
69
+ begin
70
+ require 'spec/rake/verify_rcov'
71
+ # For the moment, this is the only way I know of to fix RCov. I may
72
+ # release the fix as it's own gem at some point in the near future.
73
+ require 'stringray/core_ext/spec/rake/verify_rcov'
74
+ RCov::VerifyTask.new(:verify) do |t|
75
+ t.threshold = 65.0
76
+ t.index_html = File.join('meta', 'coverage', 'index.html')
77
+ t.require_exact_threshold = false
78
+ end
79
+ rescue LoadError
80
+ desc 'You need the `stringray` gem to verify coverage'
81
+ task :verify
82
+ end
83
+
84
+ task :open do
85
+ system 'open ' + File.join('meta', 'coverage', 'index.html') if PLATFORM['darwin']
86
+ end
87
+ end
88
+
89
+ rescue LoadError
90
+ desc 'You need the `rcov` and `rspec` gems to run specs/coverage'
91
+ task :coverage
92
+ end
93
+
94
+ # =======================
95
+ # = Documentation tasks =
96
+ # =======================
97
+ begin
98
+ require 'yard'
99
+ require 'yard/rake/yardoc_task'
100
+
101
+ task :documentation => :'documentation:generate'
102
+ namespace :documentation do
103
+ YARD::Rake::YardocTask.new :generate do |t|
104
+ t.files = ['lib/**/*.rb']
105
+ t.options = ['--output-dir', File.join('meta', 'documentation'),
106
+ '--readme', 'README.markdown']
107
+ end
108
+
109
+ YARD::Rake::YardocTask.new :dotyardoc do |t|
110
+ t.files = ['lib/**/*.rb']
111
+ t.options = ['--no-output',
112
+ '--readme', 'README.markdown']
113
+ end
114
+
115
+ task :open do
116
+ system 'open ' + File.join('meta', 'documentation', 'index.html') if PLATFORM['darwin']
117
+ end
118
+ end
119
+
120
+ rescue LoadError
121
+ desc 'You need the `yard` gem to generate documentation'
122
+ task :documentation
123
+ end
124
+
125
+ # =========
126
+ # = Other =
127
+ # =========
128
+ desc 'Removes all meta producs'
129
+ task :clobber do
130
+ `rm -rf #{File.expand_path(File.join( File.dirname(__FILE__), 'meta' ))}`
131
+ end
132
+
133
+ desc 'Check everything over before commiting'
134
+ task :aok => [:'documentation:generate', :'documentation:open',
135
+ :'package:manifest',
136
+ :'coverage:run', :'coverage:verify', :'coverage:open']
137
+
138
+ task :ci => [:'documentation:generate', :'coverage:run', :'coverage:verify']
data/bin/jello ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby -Ku
2
+ ($:.unshift File.expand_path(File.join( File.dirname(__FILE__), '..', 'lib' ))).uniq!
3
+ %w[jello rubygems optparse].each {|dep| require dep }
4
+
5
+ options = Hash.new
6
+ OptionParser.new do |opts|
7
+ opts.banner = "Usage: jello [options] <mould> (<mould> …)"
8
+
9
+ opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
10
+ options[:verbose] = v
11
+ end
12
+ end.parse!
13
+
14
+ ARGV.each do |mould|
15
+ require Jello::Mould.find(mould)
16
+ end
17
+
18
+ Jello.start! options
data/jello.gemspec ADDED
@@ -0,0 +1,128 @@
1
+
2
+ # Gem::Specification for Jello-2
3
+ # Originally generated by Echoe
4
+
5
+ --- !ruby/object:Gem::Specification
6
+ name: jello
7
+ version: !ruby/object:Gem::Version
8
+ version: "2"
9
+ platform: ruby
10
+ authors:
11
+ - elliottcable
12
+ autorequire:
13
+ bindir: bin
14
+
15
+ date: 2008-09-29 00:00:00 -08:00
16
+ default_executable:
17
+ dependencies:
18
+ - !ruby/object:Gem::Dependency
19
+ name: echoe
20
+ type: :development
21
+ version_requirement:
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.1
27
+ version:
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
30
+ type: :development
31
+ version_requirement:
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: "0"
37
+ version:
38
+ - !ruby/object:Gem::Dependency
39
+ name: rcov
40
+ type: :development
41
+ version_requirement:
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ version:
48
+ - !ruby/object:Gem::Dependency
49
+ name: yard
50
+ type: :development
51
+ version_requirement:
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ version:
58
+ - !ruby/object:Gem::Dependency
59
+ name: stringray
60
+ type: :development
61
+ version_requirement:
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ version:
68
+ description: A library to watch the OS X pasteboard, and process/modify incoming pastes.
69
+ email:
70
+ - Jello@elliottcable.com
71
+ executables:
72
+ - jello
73
+ extensions: []
74
+
75
+ extra_rdoc_files:
76
+ - bin/jello
77
+ - lib/jello/core_ext/kernel.rb
78
+ - lib/jello/logger.rb
79
+ - lib/jello/mould.rb
80
+ - lib/jello/pasteboard.rb
81
+ - lib/jello.rb
82
+ - README.markdown
83
+ files:
84
+ - bin/jello
85
+ - lib/jello/core_ext/kernel.rb
86
+ - lib/jello/logger.rb
87
+ - lib/jello/mould.rb
88
+ - lib/jello/pasteboard.rb
89
+ - lib/jello.rb
90
+ - moulds/grabup.rb
91
+ - moulds/say.rb
92
+ - moulds/shorten.rb
93
+ - Rakefile.rb
94
+ - README.markdown
95
+ - spec/jello_spec.rb
96
+ - .manifest
97
+ - jello.gemspec
98
+ has_rdoc: true
99
+ homepage: http://github.com/elliottcable/jello
100
+ post_install_message:
101
+ rdoc_options:
102
+ - --line-numbers
103
+ - --inline-source
104
+ - --title
105
+ - Jello
106
+ - --main
107
+ - README.markdown
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: "0"
115
+ version:
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: "1.2"
121
+ version:
122
+ requirements: []
123
+
124
+ rubyforge_project: jello
125
+ rubygems_version: 1.3.0
126
+ specification_version: 2
127
+ summary: A library to watch the OS X pasteboard, and process/modify incoming pastes.
128
+ test_files: []
@@ -0,0 +1,24 @@
1
+ module Kernel
2
+ def forever &block
3
+ __forever__(&block ||= lambda {})
4
+ end
5
+
6
+ def __forever__
7
+ begin
8
+ while true
9
+ yield
10
+ end
11
+ rescue Interrupt
12
+ exit
13
+ end
14
+ end
15
+
16
+ # Execute some code without any warnings
17
+ def silently
18
+ old_verbose, $VERBOSE = $VERBOSE, nil
19
+ yield
20
+ ensure
21
+ $VERBOSE = old_verbose
22
+ end
23
+
24
+ end
@@ -0,0 +1,5 @@
1
+ class Logger
2
+ include Singleton
3
+
4
+ # TODO
5
+ end
@@ -0,0 +1,77 @@
1
+ module Jello
2
+
3
+ ##
4
+ # A hash of each pasteboard and the moulds that preform on that pasteboard.
5
+ Moulds = Pasteboards.inject(Hash.new) {|h,pb| h[pb] = Array.new ; h }
6
+
7
+ class Mould
8
+
9
+ ##
10
+ # This checks the Jello require paths for a mould by that name. The
11
+ # following directories are checked, in this order:
12
+ #
13
+ # - `$HOME/.jello/*.rb`
14
+ # - `/etc/jello/*.rb`
15
+ # - `$JELLO_SRC/moulds/*.rb`
16
+ #
17
+ # The first one with a file by the correct name will overide any later
18
+ # ones.
19
+ def self.find name
20
+ [File.join(ENV['HOME'], '.jello'),
21
+ File.join('etc', 'jello'),
22
+ File.join( File.dirname(__FILE__), '..', '..', 'moulds' )].each do |dir|
23
+ dir = File.expand_path(dir)
24
+
25
+ if File.directory? dir
26
+ Dir["#{dir}/**/*.rb"].each do |file|
27
+ # This should be quite powerful - if you have a directory of
28
+ # moulds, you can select them all, or you can select all of them
29
+ # plus a single-file mould of the same name. Or whatever you might
30
+ # want. Mmmsexy? Mmmsexy.
31
+ return file if file.gsub(/^#{dir}/, '') =~ /#{name}/
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ return nil
38
+ end
39
+
40
+ ##
41
+ # This takes a block that will be executed on every paste received by
42
+ # Jello.
43
+ attr_accessor :on_paste
44
+
45
+ ##
46
+ # Acts as both a getter and a setter for the @on_paste attribute. If
47
+ # passed a block, it sets that block as the @on_paste hook - else it
48
+ # returns the current hook block.
49
+ #
50
+ # @see @on_paste
51
+ def on_paste &block
52
+ if block_given?
53
+ @on_paste = block
54
+ else
55
+ @on_paste
56
+ end
57
+ end
58
+
59
+ ##
60
+ # Creates a new Mould. Takes a block to be run on every paste.
61
+ def initialize pasteboard = nil, &block
62
+ @pasteboard = pasteboard || Pasteboard::General
63
+ @on_paste = block
64
+
65
+ Moulds[@pasteboard] << self
66
+ end
67
+
68
+ ##
69
+ # We pass any missing methods on to the Pasteboard.
70
+ #
71
+ # @see Jello::Pasteboard
72
+ def method_missing meth, *args
73
+ @pasteboard.send meth, *args
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,110 @@
1
+ module Jello
2
+ Pasteboards = []
3
+
4
+ class Pasteboard
5
+
6
+ ##
7
+ # The type of board to connect to. Available are the following:
8
+ #
9
+ # - :general [default]
10
+ # - :ruler
11
+ # - :find
12
+ # - :font
13
+ #
14
+ # OS X offers various pasteboards for use, depending on what you want to
15
+ # access. They're synced across the entire system. More information is
16
+ # available under `man pbpaste`.
17
+ #
18
+ # @see #gets
19
+ # @see #puts
20
+ attr_reader :board
21
+
22
+ ##
23
+ # The type of data to request from the board. Available are the following:
24
+ #
25
+ # - :ascii [default]
26
+ # - :rtf (Rich Text)
27
+ # - :ps (PostScript)
28
+ #
29
+ # You're not guaranteed to receive that type, however - you'll receive it if
30
+ # it's available, otherwise you'll receive the first in the above list that
31
+ # is available. More information is available under `man pbpaste`.
32
+ #
33
+ # @see #gets
34
+ attr_accessor :format
35
+
36
+ ##
37
+ # The last paste recognized by the pasteboard. If you modify the contents
38
+ # of the pasteboard, you can save processing time by also updating this
39
+ # property with said contents, preventing an extra loop.
40
+ attr_accessor :last
41
+
42
+ attr_accessor :current
43
+
44
+ ##
45
+ # This creates a new Pasteboard instance, connected to one of the available
46
+ # Mac OS X pasteboards. You shouldn't use this directly - use one of the
47
+ # pre-defined constants instead.
48
+ #
49
+ # @see #gets
50
+ # @see #puts
51
+ def initialize options = {}
52
+ @board ||= options[:board] || :general
53
+ @format ||= options[:format] || :ascii
54
+
55
+ yield self if block_given?
56
+
57
+ @current = ""
58
+ @last = ""
59
+ end
60
+
61
+ ##
62
+ # This method gets the latest paste from the selected pasteboard,
63
+ # of the selected format (if possible - see `#format`).
64
+ #
65
+ # @see @board
66
+ # @see @format
67
+ def gets
68
+ @last = @current
69
+ command = 'pbpaste'
70
+ command << " -pboard #{@board}" if @board
71
+ @current = %x[#{command}].chomp
72
+ end
73
+
74
+ ##
75
+ # This method puts a new entry into the selected pasteboard. Format is
76
+ # automatically deduced from the headers of your string (see `man pbpaste`
77
+ # for more info.)
78
+ #
79
+ # @see @board
80
+ def puts something
81
+ command = 'pbcopy'
82
+ command << " -pboard #{@board}" if @board
83
+ command << " -Prefer #{@format}" if @format
84
+ out = IO::popen command, 'w+'
85
+ out.print something
86
+ out.close
87
+ something
88
+ end
89
+
90
+
91
+ ##
92
+ # A pasteboard that stores general text
93
+ General = new :board => :general
94
+
95
+ ##
96
+ # Unknown
97
+ Ruler = new :board => :ruler
98
+
99
+ ##
100
+ # A pasteboard that stores the text used in find dialogues
101
+ Find = new :board => :find
102
+
103
+ ##
104
+ # Unknown
105
+ Font = new :board => :font
106
+
107
+ [General, Ruler, Find, Font].each {|pb| Pasteboards << pb }
108
+
109
+ end
110
+ end
data/lib/jello.rb ADDED
@@ -0,0 +1,37 @@
1
+ require 'jello/core_ext/kernel'
2
+ require 'jello/pasteboard'
3
+ require 'jello/mould'
4
+
5
+ module Jello
6
+ Version = 2
7
+
8
+ def self.start! options = {}
9
+ options = {:verbose => false, :period => 0.5}.merge(options)
10
+
11
+ forever do
12
+
13
+ Moulds.each do |pasteboard, moulds|
14
+ if (paste = pasteboard.gets) != pasteboard.last
15
+ initial_paste = paste.dup
16
+
17
+ puts "#{pasteboard.board} received: [#{initial_paste}]" if options[:verbose]
18
+ moulds.each do |mould|
19
+ paste = mould.on_paste[paste]
20
+ end
21
+
22
+ if paste.is_a?(String) and paste != initial_paste
23
+ puts " --> [#{paste}]" if options[:verbose]
24
+ pasteboard.puts paste
25
+ end
26
+ end
27
+ end
28
+
29
+ sleep options[:period]
30
+ end
31
+ end
32
+
33
+ def self.stop!
34
+ raise Interrupt # …
35
+ end
36
+
37
+ end
data/moulds/grabup.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'open-uri'
2
+
3
+ Jello::Mould.new do |paste|
4
+ if paste =~ %r{^http://www\.grabup\.com/uploads/[0-9a-z]{32}\.png$}
5
+ paste.gsub!(%r{^http://www\.}, 'http://')
6
+ paste += '?direct'
7
+ end
8
+ end
data/moulds/say.rb ADDED
@@ -0,0 +1,3 @@
1
+ Jello::Mould.new do |paste|
2
+ system "say 'You pasted #{paste}'"
3
+ end
data/moulds/shorten.rb ADDED
@@ -0,0 +1,19 @@
1
+ require 'rubygems'
2
+ require 'JSON'
3
+
4
+ Jello::Mould.new do |paste, board|
5
+
6
+ if paste =~ %r{^http://.*}
7
+ uri = $&
8
+ unless paste =~ %r{^http://tr.im}
9
+ uri.gsub! /#/, '%23' # Fix anchors
10
+
11
+ shortener = 'http://tr.im/api/trim_url.json?url=' + uri
12
+
13
+ reply = open(shortener).read
14
+ short = JSON.parse reply
15
+ short['url']
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,2 @@
1
+ ($:.unshift File.expand_path(File.join( File.dirname(__FILE__), '..', 'lib' ))).uniq!
2
+ require 'jello'
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: elliottcable-jello
3
+ version: !ruby/object:Gem::Version
4
+ version: "2"
5
+ platform: ruby
6
+ authors:
7
+ - elliottcable
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ date: 2008-09-29 01:00:00 -07:00
12
+ default_executable:
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: echoe
16
+ type: :development
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.1
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: rspec
26
+ type: :development
27
+ version_requirement:
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: "0"
33
+ version:
34
+ - !ruby/object:Gem::Dependency
35
+ name: rcov
36
+ type: :development
37
+ version_requirement:
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: "0"
43
+ version:
44
+ - !ruby/object:Gem::Dependency
45
+ name: yard
46
+ type: :development
47
+ version_requirement:
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: "0"
53
+ version:
54
+ - !ruby/object:Gem::Dependency
55
+ name: stringray
56
+ type: :development
57
+ version_requirement:
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: "0"
63
+ version:
64
+ description: A library to watch the OS X pasteboard, and process/modify incoming pastes.
65
+ email:
66
+ - Jello@elliottcable.com
67
+ executables:
68
+ - jello
69
+ extensions: []
70
+
71
+ extra_rdoc_files:
72
+ - bin/jello
73
+ - lib/jello/core_ext/kernel.rb
74
+ - lib/jello/logger.rb
75
+ - lib/jello/mould.rb
76
+ - lib/jello/pasteboard.rb
77
+ - lib/jello.rb
78
+ - README.markdown
79
+ files:
80
+ - bin/jello
81
+ - lib/jello/core_ext/kernel.rb
82
+ - lib/jello/logger.rb
83
+ - lib/jello/mould.rb
84
+ - lib/jello/pasteboard.rb
85
+ - lib/jello.rb
86
+ - moulds/grabup.rb
87
+ - moulds/say.rb
88
+ - moulds/shorten.rb
89
+ - Rakefile.rb
90
+ - README.markdown
91
+ - spec/jello_spec.rb
92
+ - .manifest
93
+ - jello.gemspec
94
+ has_rdoc: true
95
+ homepage: http://github.com/elliottcable/jello
96
+ post_install_message:
97
+ rdoc_options:
98
+ - --line-numbers
99
+ - --inline-source
100
+ - --title
101
+ - Jello
102
+ - --main
103
+ - README.markdown
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: "0"
111
+ version:
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: "1.2"
117
+ version:
118
+ requirements: []
119
+
120
+ rubyforge_project: jello
121
+ rubygems_version: 1.2.0
122
+ signing_key:
123
+ specification_version: 2
124
+ summary: A library to watch the OS X pasteboard, and process/modify incoming pastes.
125
+ test_files: []
126
+