# Parse command line arguments if(ARGV.size != 1) print "Converts a DragonSpeak Text file to colourized HTML.\n" print "Revision 1, 2004-10-08, by Tafyrn\n\n" print "Usage: ruby dstoHTML myDragonSpeak.ds > myDragonSpeak.html.ds\n" exit else dsFileName = ARGV[0] end # Open the DS File dsFile = File.open(dsFileName, "rb") # Construct HTML Header print "<HTML>\n<HEAD>\n\t<TITLE>#{dsFileName[0..dsFileName.length - 4]}</TITLE>\n</HEAD>\n<BODY BGCOLOR=\"\#ffffff\">\n<PRE>\n" while(dsFile.eof? == false) # Parse lines dsFile.each do |line| if(0 == line.index("DSPK")) # Handle DSPK Line line = "<FONT COLOR=\"#308160\">" + line[0..line.length - 3] + "</FONT>\n" elsif(0 == line.index("*Endtriggers*")) # Handle Endtriggers Line line = "<FONT COLOR=\"#308160\">" + line[0..line.length - 3] + "</FONT>\n" else if(line[/\([0-9]+:[0-9]+\)/]) # Handle DS (nn:mm) at beginning of line line.gsub!(/\([0-9]+:/) { |substr| "(<FONT COLOR=\"#308160\">" + "#{substr[1..substr.length]}" } line.gsub!(/:([0-9]+)\)/) { |substr| "#{substr[0..substr.length - 2]}" + "</FONT>)"} # Handle DS (nn,mm) coordinates line.gsub!(/\([0-9]+\,/) { |substr| "(<FONT COLOR=\"#835E30\">" + "#{substr[1..substr.length - 2]}" + "</FONT>," } line.gsub!(/\,([0-9]+)\)/) { |substr| ",<FONT COLOR=\"#835E30\">" + "#{substr[1..substr.length - 2]}" + "</FONT>)" } # Handle DS " nn " numeric values line.gsub!(/ [0-9]+ /) { |substr| " <FONT COLOR=\"#835E30\">" + "#{substr[1..substr.length - 2]}" + "</FONT> " } line.gsub!(/ [0-9]+./) { |substr| " <FONT COLOR=\"#835E30\">" + "#{substr[1..substr.length - 2]}" + "</FONT>." } line.gsub!(/ [0-9]+$/) { |substr| " <FONT COLOR=\"#835E30\">" + "#{substr[1..substr.length - 2]}" + "</FONT>" } # Handle DS Strings line.gsub!(/\{[^\}]*\}/) { |substr| "{<FONT COLOR=\"#835E30\">" + "#{substr[1..substr.length - 2]}" + "</FONT>}" } # Handle DS Variables line.gsub!(/\%[^. \[]*[. \[]/) { |substr| if(substr[substr.length - 1] == 32) "%<FONT COLOR=\"#832F83\">" + "#{substr[1..substr.length - 2]}" + "</FONT> " elsif(substr[substr.length - 1] == ?.) "%<FONT COLOR=\"#832F83\">" + "#{substr[1..substr.length - 2]}" + "</FONT>." elsif(substr[substr.length - 1] == ?[) "%<FONT COLOR=\"#832F83\">" + "#{substr[1..substr.length - 2]}" + "</FONT>[" end } # Handle DS Variables at end of the line line.gsub!(/\%[^ ]*$/) { |substr| "%<FONT COLOR=\"#832F83\">" + "#{substr[1..substr.length - 2]}" + "</FONT>" } # Handle DS Variable Array Indexes line.gsub!(/\[[0-9]+\]/) { |substr| "[<FONT COLOR=\"#835E30\">" + "#{substr[1..substr.length - 2]}" + "</FONT>]" } else if(line[0] == ?*) # Handle comment lines line = "<i><FONT COLOR=\"#305E96\">" + line[0..line.length - 3] + "</FONT></i>\n" else # Handle old style DS Markup if(line[/[0-9]/]) line.gsub!(/ [0-9]+ /) { |substr| " <FONT COLOR=\"#831414\">" + "#{substr[1..substr.length - 2]}" + "</FONT> " } line.gsub!(/^[0-9]+ /) { |substr| "<FONT COLOR=\"#831414\">" + "#{substr[1..substr.length - 2]}" + "</FONT> " } line.gsub!(/ [0-9]+$/) { |substr| " <FONT COLOR=\"#831414\">" + "#{substr[1..substr.length - 2]}" + "</FONT>" } else line = "<i><FONT COLOR=\"#305E96\">" + line[0..line.length - 3] + "</FONT></i>\n" end end end end print line end end # Construct HTML Footer print "</PRE>\n</BODY>\n</HTML>\n" dsFile.close