I made a small update to my ruby clipboard utility. Now it works in both Windows and Gnome…*ahem* again.
In particular I renamed my Clipboard class to Clipboardr to avoid a naming conflict.
I made a small update to my ruby clipboard utility. Now it works in both Windows and Gnome…*ahem* again.
In particular I renamed my Clipboard class to Clipboardr to avoid a naming conflict.
I wrote a little renaming utility to help me with the all too common task of file re-naming that seems to keep coming up. The class itself is pretty general; the idea is to extend it and override the “valid_file” and “format” methods for whatever specific task I’m doing.
The “valid_file” method is intended to recognize which files need to be renamed in the case you’ve got files you don’t want to touch in the directory. By default the function just ignores the “.” and “..” in the directory listing.
The “format” method is used to to specify the actual rules and routine to use when renaming your file. By default it replaces spaces and dashes with underscores.
Finally, this isn’t “finished” software. No error checking, no notes. It works for me and maybe it’ll work for you too.
Here’s an example class I wrote using the renaming utility. It’ll prepend the string “prepend_” onto all png files in the specified directory. Note that there’s a “safe_mode” variable passed in the constructor. Setting the “safe_mode” to true will prevent the files from being renamed while you’re working on it.
require 'renamer'
safe_mode = false
class Example < Renamer
def format file
file = custom_format(super(file))
puts file
return file
end
def valid_file file
valid = super(file)
valid = valid && file.include?('.png')
return valid
end
def custom_format file
return "prepend_#{file}"
end
end
if __FILE__ == $0
path = ARGV[0]
r = Example.new(path,safe_mode)
r.rename_files
end
Download the code: Ruby File Renaming Utility
I have a few ruby scripts that I use to make life a little easier at work. Some of said scripts utilize the clipboard. My work machine is windows and my laptop runs Ubuntu. I’m able to use the same scripts on both computers but I have a few qualms with how I’m doing it.
Right now I’ve got classes for gnome and windows, a clipboard wrapper class to be used by my scripts and a basic (and poorly named) OS class I use to determine which class desktop class to use.
First off, the method I’m using to determine OS is…terrible. Currently I’m doing a string comparison in my OS class, but it doesn’t actually tell me which desktop application I’m actually running, so at the moment it’s just a dirty hack but I’m not sure of the preferred way to do it..
def is_linux
return RUBY_PLATFORM == 'i486-linux'
end
Second, I’m uncomfortable with how I’m importing my desktop specific code in the main clipboard class. Is there a ruby-er way of doing this, or maybe just a smarter way anyone knows of?
class Clipboard
def initialize
os = OS.new
if(os.is_linux)
require 'clipboard/clipboard_gtk'
clipboard = GTKClipboard.new
else
require 'clipboard/clipboard_win32'
clipboard = WinClipboard.new
end
#other stuff
end
Any help would be greatly appreciated!
Download the code: Clipboard Utility
PS: I realize there’s quite a bit of other stuff I need to do to really get this usable, but you have to start somewhere!