clipboard 0.9.4 → 0.9.5
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/CHANGELOG.rdoc +8 -0
 - data/README.rdoc +9 -3
 - data/VERSION +1 -1
 - data/clipboard.gemspec +2 -2
 - data/lib/clipboard.rb +40 -9
 - data/lib/clipboard/file.rb +20 -0
 - data/lib/clipboard/linux.rb +25 -11
 - data/lib/clipboard/mac.rb +8 -2
 - data/lib/clipboard/windows.rb +9 -3
 - data/spec/clipboard_spec.rb +75 -1
 - data/spec/spec_helper.rb +2 -1
 - metadata +14 -10
 
    
        data/CHANGELOG.rdoc
    ADDED
    
    | 
         @@ -0,0 +1,8 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            == 0.9.5
         
     | 
| 
      
 2 
     | 
    
         
            +
            * Fallback to Clipboard::File, if no other clipboard is available
         
     | 
| 
      
 3 
     | 
    
         
            +
            * Also check for xsel if using linux implementation
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Fix for jruby copying
         
     | 
| 
      
 5 
     | 
    
         
            +
            * You can directly use a specific implementation, e.g.: require 'clipboard/file' # gives you Clipboard::File
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            == < 0.9.4
         
     | 
| 
      
 8 
     | 
    
         
            +
            See https://github.com/janlelis/clipboard/commits/0.9.4
         
     | 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -21,22 +21,28 @@ If you paste with 1.9, the Clipboard encoding will be translated to your <tt>Enc 
     | 
|
| 
       21 
21 
     | 
    
         
             
            If you paste with 1.8, it will fallback to CP850 encoding.
         
     | 
| 
       22 
22 
     | 
    
         
             
            Copying with 1.8 will fallback to the +clip+ utility, which is installed by default since Vista
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
      
 24 
     | 
    
         
            +
            ==== SSH note
         
     | 
| 
      
 25 
     | 
    
         
            +
            To you use the clipboard through ssh, you need to install <tt>xauth</tt> on your server and connect via <tt>ssh -X</tt> or <tt>ssh -Y</tt>.
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       24 
27 
     | 
    
         
             
            === Non-gem requirements
         
     | 
| 
       25 
28 
     | 
    
         
             
            * *Linux*: +xclip+, you can install it on debian/ubuntu with <tt>sudo apt-get install xclip</tt>
         
     | 
| 
       26 
29 
     | 
    
         | 
| 
       27 
30 
     | 
    
         
             
            === Todo
         
     | 
| 
       28 
31 
     | 
    
         
             
            * Don't depend on +xclip+
         
     | 
| 
       29 
32 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
            ...if there is enough demand or motivation for me °_°
         
     | 
| 
       31 
34 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
            ==== Planned for 0.9.5
         
     | 
| 
      
 36 
     | 
    
         
            +
            * Fallback to <tt>~/.clipboard</tt> if the real clipboard can't be accessed.
         
     | 
| 
      
 37 
     | 
    
         
            +
            * Also check for +xsel+ on linux
         
     | 
| 
       33 
38 
     | 
    
         | 
| 
      
 39 
     | 
    
         
            +
            === blip
         
     | 
| 
       34 
40 
     | 
    
         
             
            Copy and paste from the commandline (like xclip, pbpaste/pbcopy), but even easier? {blip}[http://rubygems.org/gems/blip]!
         
     | 
| 
       35 
41 
     | 
    
         | 
| 
       36 
42 
     | 
    
         
             
            === Copyright
         
     | 
| 
       37 
43 
     | 
    
         
             
            Copyright (c) 2010-2011 Jan Lelis, http://rbjl.net, released under the MIT license
         
     | 
| 
       38 
44 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
            Contributions by
         
     | 
| 
      
 45 
     | 
    
         
            +
            Contributions by and thanks to
         
     | 
| 
       40 
46 
     | 
    
         
             
            * Michael Grosser
         
     | 
| 
       41 
47 
     | 
    
         | 
| 
       42 
48 
     | 
    
         
             
            J-_-L
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.9. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.9.5
         
     | 
    
        data/clipboard.gemspec
    CHANGED
    
    | 
         @@ -6,12 +6,12 @@ Gem::Specification.new do |s| 
     | 
|
| 
       6 
6 
     | 
    
         
             
              s.version = File.read('VERSION').chomp
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
              s.authors = ["Jan Lelis"]
         
     | 
| 
       9 
     | 
    
         
            -
              s.date = '2011- 
     | 
| 
      
 9 
     | 
    
         
            +
              s.date = '2011-02-28'
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.summary = 'Access the clipboard on all systems.'
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.description = 'Access the clipboard on all systems (Clipboard.copy & Clipboard.paste).'
         
     | 
| 
       12 
12 
     | 
    
         
             
              s.email = 'mail@janlelis.de'
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.homepage = %q{http://github.com/janlelis/clipboard}
         
     | 
| 
       14 
     | 
    
         
            -
              s. 
     | 
| 
      
 14 
     | 
    
         
            +
              s.required_rubygems_version = ">= 1.3.6"
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.requirements =  ["On Linux (or other X), you need xclip. Install it on debian/ubuntu with sudo apt-get install xclip"]
         
     | 
| 
       16 
16 
     | 
    
         
             
              s.requirements << ["On Windows, you need the ffi gem."]
         
     | 
| 
       17 
17 
     | 
    
         
             
              s.files = Dir.glob(%w[{lib,spec}/**/*.rb [A-Z]* [A-Z]*.rdoc]) + %w{clipboard.gemspec}
         
     | 
    
        data/lib/clipboard.rb
    CHANGED
    
    | 
         @@ -1,18 +1,49 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Clipboard
         
     | 
| 
       2 
2 
     | 
    
         
             
              extend self
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       3 
4 
     | 
    
         
             
              VERSION = File.read( (File.dirname(__FILE__) + '/../VERSION') ).chomp
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
              class ClipboardLoadError < Exception
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              autoload :Linux,   'clipboard/linux'
         
     | 
| 
      
 10 
     | 
    
         
            +
              autoload :Mac,     'clipboard/mac'
         
     | 
| 
      
 11 
     | 
    
         
            +
              autoload :Windows, 'clipboard/windows'
         
     | 
| 
      
 12 
     | 
    
         
            +
              autoload :File,    'clipboard/file'
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def self.implementation
         
     | 
| 
      
 15 
     | 
    
         
            +
              return @implementation if @implementation
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                os = case RbConfig::CONFIG['host_os']
         
     | 
| 
      
 18 
     | 
    
         
            +
                when /mac|darwin/        then :Mac
         
     | 
| 
      
 19 
     | 
    
         
            +
                when /linux|bsd|cygwin/  then :Linux
         
     | 
| 
      
 20 
     | 
    
         
            +
                when /mswin|mingw/       then :Windows
         
     | 
| 
      
 21 
     | 
    
         
            +
                # when /solaris|sunos/     then :Linux # needs testing..
         
     | 
| 
       12 
22 
     | 
    
         
             
                else
         
     | 
| 
       13 
     | 
    
         
            -
                  raise " 
     | 
| 
      
 23 
     | 
    
         
            +
                  raise ClipboardLoadError, "Your OS(#{ RbConfig::CONFIG['host_os'] }) is not supported, using file-based (fake) clipboard"
         
     | 
| 
       14 
24 
     | 
    
         
             
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                @implementation = Clipboard.const_get os
         
     | 
| 
      
 27 
     | 
    
         
            +
              rescue ClipboardLoadError => e
         
     | 
| 
      
 28 
     | 
    
         
            +
                $stderr.puts e.message if $VERBOSE
         
     | 
| 
      
 29 
     | 
    
         
            +
                @implementation = Clipboard::File
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              def self.implementation=(val)
         
     | 
| 
      
 33 
     | 
    
         
            +
                @implementation = val
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def paste(*args)
         
     | 
| 
      
 37 
     | 
    
         
            +
                Clipboard.implementation.paste(*args)
         
     | 
| 
       15 
38 
     | 
    
         
             
              end
         
     | 
| 
       16 
39 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
               
     | 
| 
      
 40 
     | 
    
         
            +
              def clear(*args)
         
     | 
| 
      
 41 
     | 
    
         
            +
                Clipboard.implementation.clear(*args)
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              def copy(*args)
         
     | 
| 
      
 45 
     | 
    
         
            +
                Clipboard.implementation.copy(*args)
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
       18 
47 
     | 
    
         
             
            end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            Clipboard.implementation # TODO remove this?
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Clipboard; end
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Clipboard::File
         
     | 
| 
      
 4 
     | 
    
         
            +
              extend self
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              FILE = File.expand_path("~/.clipboard")
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              def copy(text)
         
     | 
| 
      
 9 
     | 
    
         
            +
                File.open(FILE,'w'){|f| f.write(text) } rescue ''
         
     | 
| 
      
 10 
     | 
    
         
            +
                paste
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def paste(_ = nil)
         
     | 
| 
      
 14 
     | 
    
         
            +
                File.read(FILE) rescue ''
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def clear
         
     | 
| 
      
 18 
     | 
    
         
            +
                copy ''
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/clipboard/linux.rb
    CHANGED
    
    | 
         @@ -1,18 +1,32 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'open3'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Clipboard; end
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module Clipboard::Linux
         
     | 
| 
      
 6 
     | 
    
         
            +
              extend self
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       2 
8 
     | 
    
         
             
              CLIPBOARDS   = %w[clipboard primary secondary]
         
     | 
| 
       3 
     | 
    
         
            -
              WriteCommands = CLIPBOARDS.map{|cb| 'xclip -selection ' + cb }
         
     | 
| 
       4 
     | 
    
         
            -
              ReadCommand  = 'xclip -o'
         
     | 
| 
       5 
9 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
              #  
     | 
| 
       7 
     | 
    
         
            -
              if  
     | 
| 
       8 
     | 
    
         
            -
                 
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
              # check which backend to use
         
     | 
| 
      
 11 
     | 
    
         
            +
              if !`which xclip`.empty?
         
     | 
| 
      
 12 
     | 
    
         
            +
                WriteCommand = 'xclip'
         
     | 
| 
      
 13 
     | 
    
         
            +
                ReadCommand  = 'xclip -o'
         
     | 
| 
      
 14 
     | 
    
         
            +
                Selection    = proc{|x| "-selection #{x}"}
         
     | 
| 
      
 15 
     | 
    
         
            +
              elsif !`which xsel`.empty?
         
     | 
| 
      
 16 
     | 
    
         
            +
                WriteCommand = 'xsel'
         
     | 
| 
      
 17 
     | 
    
         
            +
                ReadCommand  = 'xsel -o'
         
     | 
| 
      
 18 
     | 
    
         
            +
                Selection    = {'clipboard' => '-b', 'primary' => '-p', 'secondary' => '-s'}
         
     | 
| 
      
 19 
     | 
    
         
            +
              else
         
     | 
| 
      
 20 
     | 
    
         
            +
                raise Clipboard::ClipboardLoadError, "clipboard:\n" \
         
     | 
| 
      
 21 
     | 
    
         
            +
                      "Could not find required program xclip (or xsel)\n" \
         
     | 
| 
       10 
22 
     | 
    
         
             
                      "On debian/ubuntu, you can install it with: sudo apt-get install xclip"
         
     | 
| 
       11 
23 
     | 
    
         
             
              end
         
     | 
| 
       12 
24 
     | 
    
         | 
| 
       13 
25 
     | 
    
         
             
              def paste(which = nil)
         
     | 
| 
       14 
     | 
    
         
            -
                which  
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
                if !which || !CLIPBOARDS.include?(which.to_s.downcase)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  which = CLIPBOARDS.first
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
                `#{ReadCommand} #{Selection[which.to_s.downcase]}`
         
     | 
| 
       16 
30 
     | 
    
         
             
              end
         
     | 
| 
       17 
31 
     | 
    
         | 
| 
       18 
32 
     | 
    
         
             
              def clear
         
     | 
| 
         @@ -20,8 +34,8 @@ module Clipboard 
     | 
|
| 
       20 
34 
     | 
    
         
             
              end
         
     | 
| 
       21 
35 
     | 
    
         | 
| 
       22 
36 
     | 
    
         
             
              def copy(data)
         
     | 
| 
       23 
     | 
    
         
            -
                 
     | 
| 
       24 
     | 
    
         
            -
                   
     | 
| 
      
 37 
     | 
    
         
            +
                CLIPBOARDS.each{ |which|
         
     | 
| 
      
 38 
     | 
    
         
            +
                  Open3.popen3( "#{WriteCommand} #{Selection[which.to_s.downcase]}" ){ |input,_,_| input << data }
         
     | 
| 
       25 
39 
     | 
    
         
             
                }
         
     | 
| 
       26 
40 
     | 
    
         
             
                paste
         
     | 
| 
       27 
41 
     | 
    
         
             
              end
         
     | 
    
        data/lib/clipboard/mac.rb
    CHANGED
    
    | 
         @@ -1,10 +1,16 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'open3'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Clipboard; end
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module Clipboard::Mac
         
     | 
| 
      
 6 
     | 
    
         
            +
              extend self
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       2 
8 
     | 
    
         
             
              def paste(_ = nil)
         
     | 
| 
       3 
9 
     | 
    
         
             
                `pbpaste`
         
     | 
| 
       4 
10 
     | 
    
         
             
              end
         
     | 
| 
       5 
11 
     | 
    
         | 
| 
       6 
12 
     | 
    
         
             
              def copy(data)
         
     | 
| 
       7 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                Open3.popen3( 'pbcopy' ){ |input,_,_| input << data }
         
     | 
| 
       8 
14 
     | 
    
         
             
                paste
         
     | 
| 
       9 
15 
     | 
    
         
             
              end
         
     | 
| 
       10 
16 
     | 
    
         | 
    
        data/lib/clipboard/windows.rb
    CHANGED
    
    | 
         @@ -1,4 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require 'open3'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Clipboard; end
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            module Clipboard::Windows
         
     | 
| 
      
 6 
     | 
    
         
            +
              extend self
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       2 
8 
     | 
    
         
             
              CF_TEXT = 1
         
     | 
| 
       3 
9 
     | 
    
         
             
              CF_UNICODETEXT = 13
         
     | 
| 
       4 
10 
     | 
    
         
             
              GMEM_MOVEABLE = 2
         
     | 
| 
         @@ -33,7 +39,7 @@ module Clipboard 
     | 
|
| 
       33 
39 
     | 
    
         
             
              end
         
     | 
| 
       34 
40 
     | 
    
         | 
| 
       35 
41 
     | 
    
         
             
              # see http://www.codeproject.com/KB/clipboard/archerclipboard1.aspx
         
     | 
| 
       36 
     | 
    
         
            -
              def paste(_=nil)
         
     | 
| 
      
 42 
     | 
    
         
            +
              def paste(_ = nil)
         
     | 
| 
       37 
43 
     | 
    
         
             
                ret = ""
         
     | 
| 
       38 
44 
     | 
    
         
             
                  if 0 != User32.open( 0 )
         
     | 
| 
       39 
45 
     | 
    
         
             
                    hclip = User32.get( CF_UNICODETEXT )
         
     | 
| 
         @@ -82,7 +88,7 @@ module Clipboard 
     | 
|
| 
       82 
88 
     | 
    
         
             
                  User32.set( CF_UNICODETEXT, handler )
         
     | 
| 
       83 
89 
     | 
    
         
             
                  User32.close( )
         
     | 
| 
       84 
90 
     | 
    
         
             
                else # don't touch anything
         
     | 
| 
       85 
     | 
    
         
            -
                   
     | 
| 
      
 91 
     | 
    
         
            +
                  Open3.popen3( 'clip' ){ |input,_,_| input << data_to_copy } # depends on clip (available by default since Vista)
         
     | 
| 
       86 
92 
     | 
    
         
             
                end
         
     | 
| 
       87 
93 
     | 
    
         
             
                paste
         
     | 
| 
       88 
94 
     | 
    
         
             
              end
         
     | 
    
        data/spec/clipboard_spec.rb
    CHANGED
    
    | 
         @@ -1,6 +1,12 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require File.expand_path('spec/spec_helper')
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            $os = RbConfig::CONFIG['host_os']
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
            describe Clipboard do
         
     | 
| 
      
 6 
     | 
    
         
            +
              before do
         
     | 
| 
      
 7 
     | 
    
         
            +
                RbConfig::CONFIG['host_os'] = $os
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       4 
10 
     | 
    
         
             
              it "has a VERSION" do
         
     | 
| 
       5 
11 
     | 
    
         
             
                Clipboard::VERSION.should =~ /^\d+\.\d+\.\d+$/
         
     | 
| 
       6 
12 
     | 
    
         
             
              end
         
     | 
| 
         @@ -13,4 +19,72 @@ describe Clipboard do 
     | 
|
| 
       13 
19 
     | 
    
         
             
              it "returns data on copy" do
         
     | 
| 
       14 
20 
     | 
    
         
             
                Clipboard.copy('xxx').should == 'xxx'
         
     | 
| 
       15 
21 
     | 
    
         
             
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              it "can clear" do
         
     | 
| 
      
 24 
     | 
    
         
            +
                Clipboard.copy('xxx')
         
     | 
| 
      
 25 
     | 
    
         
            +
                Clipboard.clear
         
     | 
| 
      
 26 
     | 
    
         
            +
                Clipboard.paste.should == ''
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              describe "when included" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                class A
         
     | 
| 
      
 31 
     | 
    
         
            +
                  include Clipboard
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                it "can copy & paste & clear" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  a = A.new
         
     | 
| 
      
 36 
     | 
    
         
            +
                  a.send(:copy, "XXX").should == 'XXX'
         
     | 
| 
      
 37 
     | 
    
         
            +
                  a.send(:paste).should == "XXX"
         
     | 
| 
      
 38 
     | 
    
         
            +
                  a.send(:clear)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  a.send(:paste).should == ''
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              describe 'Clipboard::File' do
         
     | 
| 
      
 44 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 45 
     | 
    
         
            +
                  Clipboard.implementation = Clipboard::File
         
     | 
| 
      
 46 
     | 
    
         
            +
                  cache = Clipboard::File::FILE
         
     | 
| 
      
 47 
     | 
    
         
            +
                  FileUtils.rm cache if File.exist?(cache)
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                it "can paste with empty file" do
         
     | 
| 
      
 51 
     | 
    
         
            +
                  Clipboard.paste.should == ''
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                it "can copy & paste" do
         
     | 
| 
      
 55 
     | 
    
         
            +
                  Clipboard.copy('xxx').should == 'xxx'
         
     | 
| 
      
 56 
     | 
    
         
            +
                  Clipboard.paste.should == 'xxx'
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                it "can clear" do
         
     | 
| 
      
 60 
     | 
    
         
            +
                  Clipboard.copy('xxx').should == 'xxx'
         
     | 
| 
      
 61 
     | 
    
         
            +
                  Clipboard.clear
         
     | 
| 
      
 62 
     | 
    
         
            +
                  Clipboard.paste.should == ''
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              describe :implementation do
         
     | 
| 
      
 67 
     | 
    
         
            +
                before do
         
     | 
| 
      
 68 
     | 
    
         
            +
                  $VERBOSE = true
         
     | 
| 
      
 69 
     | 
    
         
            +
                  Clipboard.implementation = nil
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                it "does not warn on normal detection" do
         
     | 
| 
      
 73 
     | 
    
         
            +
                  $stderr.should_not_receive(:puts)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  Clipboard.implementation
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                it "warns when OS is unknown" do
         
     | 
| 
      
 78 
     | 
    
         
            +
                  RbConfig::CONFIG['host_os'] = 'Fooo OS'
         
     | 
| 
      
 79 
     | 
    
         
            +
                  $stderr.should_receive(:puts)
         
     | 
| 
      
 80 
     | 
    
         
            +
                  Clipboard.implementation.should == Clipboard::File
         
     | 
| 
      
 81 
     | 
    
         
            +
                end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                it "does not warn when $VERBOSE is false" do
         
     | 
| 
      
 84 
     | 
    
         
            +
                  $VERBOSE = false
         
     | 
| 
      
 85 
     | 
    
         
            +
                  RbConfig::CONFIG['host_os'] = 'Fooo OS'
         
     | 
| 
      
 86 
     | 
    
         
            +
                  $stderr.should_not_receive(:puts)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  Clipboard.implementation
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version 
     | 
|
| 
       5 
5 
     | 
    
         
             
              segments: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              - 0
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 9
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              version: 0.9. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 5
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.9.5
         
     | 
| 
       10 
10 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
11 
     | 
    
         
             
            authors: 
         
     | 
| 
       12 
12 
     | 
    
         
             
            - Jan Lelis
         
     | 
| 
         @@ -14,7 +14,7 @@ autorequire: 
     | 
|
| 
       14 
14 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
15 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            date: 2011- 
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2011-02-28 00:00:00 +01:00
         
     | 
| 
       18 
18 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       19 
19 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
         @@ -28,17 +28,19 @@ extra_rdoc_files: [] 
     | 
|
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
            files: 
         
     | 
| 
       30 
30 
     | 
    
         
             
            - lib/clipboard.rb
         
     | 
| 
       31 
     | 
    
         
            -
            - lib/clipboard/mac.rb
         
     | 
| 
       32 
31 
     | 
    
         
             
            - lib/clipboard/linux.rb
         
     | 
| 
      
 32 
     | 
    
         
            +
            - lib/clipboard/mac.rb
         
     | 
| 
      
 33 
     | 
    
         
            +
            - lib/clipboard/file.rb
         
     | 
| 
       33 
34 
     | 
    
         
             
            - lib/clipboard/windows.rb
         
     | 
| 
       34 
     | 
    
         
            -
            - spec/spec_helper.rb
         
     | 
| 
       35 
35 
     | 
    
         
             
            - spec/clipboard_spec.rb
         
     | 
| 
       36 
     | 
    
         
            -
            -  
     | 
| 
      
 36 
     | 
    
         
            +
            - spec/spec_helper.rb
         
     | 
| 
       37 
37 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       38 
     | 
    
         
            -
            - LICENSE
         
     | 
| 
       39 
     | 
    
         
            -
            - Gemfile.lock
         
     | 
| 
       40 
38 
     | 
    
         
             
            - README.rdoc
         
     | 
| 
      
 39 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 40 
     | 
    
         
            +
            - Gemfile.lock
         
     | 
| 
      
 41 
     | 
    
         
            +
            - LICENSE
         
     | 
| 
       41 
42 
     | 
    
         
             
            - VERSION
         
     | 
| 
      
 43 
     | 
    
         
            +
            - CHANGELOG.rdoc
         
     | 
| 
       42 
44 
     | 
    
         
             
            - clipboard.gemspec
         
     | 
| 
       43 
45 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       44 
46 
     | 
    
         
             
            homepage: http://github.com/janlelis/clipboard
         
     | 
| 
         @@ -63,8 +65,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       63 
65 
     | 
    
         
             
              - - ">="
         
     | 
| 
       64 
66 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       65 
67 
     | 
    
         
             
                  segments: 
         
     | 
| 
       66 
     | 
    
         
            -
                  -  
     | 
| 
       67 
     | 
    
         
            -
                   
     | 
| 
      
 68 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 69 
     | 
    
         
            +
                  - 3
         
     | 
| 
      
 70 
     | 
    
         
            +
                  - 6
         
     | 
| 
      
 71 
     | 
    
         
            +
                  version: 1.3.6
         
     | 
| 
       68 
72 
     | 
    
         
             
            requirements: 
         
     | 
| 
       69 
73 
     | 
    
         
             
            - On Linux (or other X), you need xclip. Install it on debian/ubuntu with sudo apt-get install xclip
         
     | 
| 
       70 
74 
     | 
    
         
             
            - - On Windows, you need the ffi gem.
         
     |