Skip to content

Instantly share code, notes, and snippets.

@kch
kch / gemfile-from-dotgems.rb
Created September 23, 2010 14:15
Convert a Heroku .gems file to a Bundler Gemfile
#!/usr/bin/env ruby
# encoding: UTF-8
require 'strscan'
(puts DATA.read.gsub(/\$0/, File.basename($0)); exit 1) unless ARGV.empty? # handled -h and anything else since we don't take args
# tokenize lines
lines = STDIN.read.strip.split(/\n+/)
gems = lines.inject({}) do |h, line|
next h if line =~ /^\s*(#.*)?$/
@kch
kch / rb-magic-comment
Created September 27, 2010 20:25
Add the encoding magic comment to the ruby files passed as arguments
#!/usr/bin/env ruby
# encoding: UTF-8
ARGV.reject! { |path| !File.file?(path) }
(puts DATA.read.gsub("$0", File.basename($0)); exit 1) if ARGV.empty?
ARGV.each do |path|
ls = IO.readlines(path)
ix = ls[0] !~ /^#!/ ? 0 : 1
next if ls[ix] =~ /#.*?coding\s*[:=]\s*\S/
@kch
kch / gist:602174
Created September 29, 2010 01:53
NSArrays are tricky bastards
#!/usr/bin/env macruby
framework 'Cocoa'
cocoa_array = NSArray.new
ruby_array = []
puts ruby_array.count # => 0
puts ruby_array.count { true } # => 0
puts ruby_array.count("whatever") # => 0
framework 'Cocoa'
# store any new classes created during the requires that follow
LOADED_RUBY_CLASSES = []
class << Object
def inherited(m)
LOADED_RUBY_CLASSES << m
end
end
@kch
kch / ipv6.rb
Created October 14, 2010 21:22
QUIZZZZS validate an ip v6
#!/usr/bin/env ruby
# encoding: UTF-8
require 'yaml'
def ipv6?(s)
raise NotImplementedError
end
good, bad = YAML::load(DATA.read).values_at *%w[ GOOD BAD ]
results = []
@kch
kch / mvdn
Created October 19, 2010 21:51
Rename files to all lowercase in two steps, works on a case-insensitive FS like HFS.
#!/usr/bin/env ruby
# encoding: UTF-8
require 'fileutils'
require 'unicode_utils'
ARGV.each do |f|
f_ = UnicodeUtils.downcase(f)
f__ = "#{f_}_#{rand}"
FileUtils.mv(f, f__)
@kch
kch / frontmost-browser.sh
Created January 28, 2011 02:14
Test case for WTF is up with System Events getting the processes for Safari and WebKit
#!/bin/bash
function safari { open -a Safari; }
function webkit { open -a WebKit; }
function reset {
killall Safari 2>/dev/null
killall WebKit 2>/dev/null
}
@kch
kch / browser.rb
Created January 28, 2011 02:24
browser function used in my appscripts to target Safari or WebKit dynamically
#!/usr/bin/env ruby
# encoding: UTF-8
require 'appscript'
VALID_BROWSERS = %w[ WebKit Safari ]
# Used in my appscripts to target Safari or WebKit dynamically.
# Returns an Appscript::Application for one of these browsers following this priority:
# 1. is frontmost
# 2. is running and default
@kch
kch / target_browser.m
Created January 28, 2011 02:32
Get the path to the frontmost app if it's Safari or Webkit, fallsback to default browser.
// ## compile this with:
// clang \
// -framework Foundation \
// -framework AppKit \
// -framework ApplicationServices \
// -fobjc-gc-only \
// -o target_browser \
// target_browser.m
#import <Foundation/Foundation.h>
@kch
kch / unicode ops.hs
Created October 24, 2011 16:46
unicode operators yay!
#!/usr/bin/env runhaskell
(≤) = (<=)
(≥) = (>=)
(≠) = (/=)
(÷) = (div)
main = do
print (1 ≤ 2)
print (2 ≥ 1)