I think this needed a minor revision to make it work if there was no text selected (no previous color) and you just wanted to insert a color. Once again, probably not the most elegant way to handle it (but it works). Let me know what you think.
#!/usr/bin/env ruby
string = STDIN.read prefix, string = string.match(/(#?)(.*)/)[1,2] string = $1 * 2 + $2 * 2 + $3 * 2 if string =~ /^(.)(.)(.)$/ if string == '' then prefix = '#' def_col = '' else def_col = ' default color {' + string.scan(/../).map { |i| i.hex * 257 }.join(",") + '}' end col = `osascript 2>/dev/null -e 'tell app "TextMate" to choose color# {def_col}'` exit 200 if col == "" col=col.scan(/\d+/).map { |i| "%02X" % (i.to_i / 257) }.join("") print prefix if col.match(/(.)\1(.)\2(.)\3/) then print $1 + $2 + $3 else print col end
Brett
On Oct 21, 2006, at 12:19 AM, Charilaos Skiadas wrote:
On Oct 20, 2006, at 10:42 PM, Brett Terpstra wrote:
It works, but I'd really like to see it cleaned up (I know Haris could do this in about 4 lines of code). So if anyone has the time... It'd be great to learn a new algorithm to handle this.
Well, since you asked for it ;) I'm sure JEG2 can shorten this further, but here is my take on it. I've attached the command, and appended the actual code.
Perhaps we should add this to the CSS bundle?
Haris
#!/usr/bin/env ruby string = STDIN.read prefix, string = string.match(/(#?)(.*)/)[1,2] string = $1 * 2 + $2 * 2 + $3 * 2 if string =~ /^(.)(.)(.)$/ def_col = ' default color {' + string.scan(/../).map { |i| i.hex * 257 }.join(",") + '}' col = `osascript 2>/dev/null -e 'tell app "TextMate" to choose color#{def_col}'` exit 200 if col == "" col=col.scan(/\d+/).map { |i| "%02X" % (i.to_i / 257) }.join("") print prefix if col.match(/(.)\1(.)\2(.)\3/) then print $1 + $2 + $3 else print col end
<Insert Color revised copy2.tmCommand>
For new threads USE THIS: textmate@lists.macromates.com (threading gets destroyed and the universe will collapse if you don't) http://lists.macromates.com/mailman/listinfo/textmate
Brett Terpstra : Art Director Circle Six Design, Inc. 111 Riverfront Dr, Suite 204 .................................................. p: 507.459.4398 877.858.4332 f: 1.866.540.3063 e: brett@circlesixdesign.com http://www.circlesixdesign.com ..................................................