Skip to content

Instantly share code, notes, and snippets.

@mdales
Forked from aktowns/dvtcolorconvert.rb
Created January 24, 2011 09:34
Show Gist options
  • Save mdales/793006 to your computer and use it in GitHub Desktop.
Save mdales/793006 to your computer and use it in GitHub Desktop.
Fork of aktowns' excellent little script for converting xcode3 color themes to xcode4. Just added rubygems import
#!/usr/bin/env ruby
# This script converts xccolorthemes to dtvcolorthemes for porting xcode 3.x themes to xcode 4.x
# created by ashley towns <ashleyis@me.com>
# Public domain.
# ./dvtcolorconvert <inputfile>
# spits out a .dtvcolortheme file
require 'rubygems'
require 'plist'
raise "Error: need a source file #{__FILE__} [file.xccolortheme]" if ARGV.length == 0
def alpha inc, alpha=1
"#{inc} #{alpha}"
end
def convert infile
hash = Plist::parse_xml infile
out_hash = {}
out_hash[:DVTSourceTextSyntaxFonts] = {}
out_hash[:DVTSourceTextSyntaxColors] = {}
hash.each do |name, node|
node.each do |child_name, child|
puts "[on] node:#{name} child:#{child_name}(#{child})"
if name == "Colors"
case child_name
when /Background/
out_hash[:DVTSourceTextBackground] = alpha child
out_hash[:DVTConsoleTextBackgroundColor] = alpha child
out_hash[:DVTSourceTextInvisiblesColor] = alpha child
out_hash[:DVTSourceTextBlockDimBackgroundColor] = alpha child
when /InsertionPoint/
out_hash[:DVTSourceTextInsertionPointColor] = alpha child
out_hash[:DVTConsoleTextInsertionPointColor] = alpha child
out_hash[:DVTDebuggerInsutrctionPointerColor] = alpha child
out_hash[:DVTConsoleDebuggerInputTextColor] = alpha child
out_hash[:DVTConsoleDebuggerOutputTextColor] = alpha child
out_hash[:DVTConsoleExectuableInputTextColor] = alpha child
out_hash[:DVTConsoleExecutableOutputTextColor] = alpha child
when /Selection/
out_hash[:DVTSourceTextSelectionColor] = alpha child
out_hash[:DVTConsoleTextSelectionColor] = alpha child
out_hash[:DVTDebuggerPromptTextColor] = alpha child
else
out_hash[:DVTSourceTextSyntaxColors][child_name] = alpha child
end
elsif name == "Fonts"
case child_name
when /xcode.syntax.plain/
child = "Inconsolata - 14pt"
out_hash[:DVTConsoleDebuggerInputTextFont] = child
out_hash[:DVTConsoleDebuggerOutputTextFont] = child
out_hash[:DVTConsoleDebuggerPromptTextFont] = child
out_hash[:DVTConsoleExecutableInputTextFont] = child
out_hash[:DVTConsoleExecutableOutputTextFont] = child
out_hash[:DVTSourceTextSyntaxFonts]['xcode.syntax.plain'] = child
else
out_hash[:DVTSourceTextSyntaxFonts][child_name] = "Inconsolata - 14pt" #child
end
else
raise "I don't know what #{name} is."
end
end
end
puts "Saving #{infile.gsub(/xccolortheme/,'dvtcolortheme')}"
fp = File.open(infile.gsub(/xccolortheme/,'dvtcolortheme'),'w')
fp.write out_hash.to_plist
fp.close
end
convert ARGV[0]
#Dir['*.xccolortheme'].each do |file|
# convert file
#end
@padde
Copy link

padde commented Apr 15, 2012

works great, thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment