Rigtig fedt design

 Har ikke noget specielt imod logoet, men da du ikke selv har lavet en java highlighter besluttede jeg mig for at lave en. Jeg har lavet den i Java:
import java.util.regex.*;
public class Highlight
{
	public Highlight()
	{
		String test="public class Highlight\\n" +
		"{\\n" +
		"	public static void main(String[] args)\\n" +
		"	{\\n" +
		"		int t=3;\\n" +
		"		System.out.println(t+2);\\n" +
		"		char c='a';\\n" +
		"		String s = \\"be\\";\\n" +
		"		//'a'+\\"be\\" = \\"abe\\"\\n" +
		"		System.out.println(c+s);\\n" +
		"	}\\n" +
		"}\\n";
		test = highlightTekst(test);
		System.out.println(test);
	}
	public static void main(String[] args)
	{
		new Highlight();
	}
	public String highlightTekst(String tekst)
	{
		String[] specielleOrd={"class", "public", "static", "protected",
				"private", "return", "true", "false"};
		String[] specielleKlasser={"void", "int", "double", "char", "byte",
				"float", "long", "short"};
		tekst = " "+tekst+"\\n";
		for(int i=0;i<specielleOrd.length;i++)
			tekst = koerIgennem(tekst, specielleOrd[i], "#0000FF");
		for(int i=0;i<specielleKlasser.length;i++)
			tekst = koerIgennem(tekst, specielleKlasser[i], "#008080");
		tekst = mellem(tekst, "[^\\\\\\\\]'", "[^\\\\\\\\]'", "#800000");
		tekst = mellem(tekst, "[^\\\\\\\\]\\"", "[^\\\\\\\\]\\"", "#800000");
		tekst = mellem(tekst, ".//", ".\\n", "#008000");
		tekst = tekst.substring(1, tekst.length()-1);
		return tekst;
	}
	public String givFarve(String alt, int start, int slut, String farve)
	{
		String nr1=alt.substring(0, start);
		String nr2=alt.substring(start, slut);
		String nr3=alt.substring(slut);
		nr2 = nr2.replaceAll("<[^<>]*>", "");
		nr2 = "<font color="+farve+">"+nr2+"</font>";
		return nr1+nr2+nr3;
	}
	public int find(String et, String to, int start)
	{
		Pattern p = Pattern.compile(to);
		Matcher m  = p.matcher(et);
		int tilbage=-1;
		for(int i=et.length()-1;i>=start;i--)
		{
			if(m.find(i))
			{
				m = p.matcher(et.substring(0, i+1));
				tilbage=i;
			}
		}
		return tilbage;
	}
	public String koerIgennem(String alt, String find, String farve)
	{
		int s=0;
		while(true)
		{
			int pos = find(alt, "[^a-z^A-Z^0-9]"+find+"[^a-z^A-Z^0-9]", s);
			if(pos==-1)
				break;
			alt=givFarve(alt, pos+1, pos+find.length()+1, farve);
			//20=("<font color=></font>").length()
			s=20+pos+find.length()+farve.length();
		}
		return alt;
	}
	public String mellem(String alt, String et, String to, String farve)
	{
		int s=0;
		while(true)
		{
			int pos1 = find(alt, et, s);
			if(pos1==-1)
				break;
			int pos2 = find(alt, to, pos1+1);
			if(pos2==-1)
				break;
			String mid = alt.substring(pos1+1, pos2+2);
			alt=givFarve(alt, pos1+1, pos2+2, farve);
			//20=("<font color=></font>").length()
			s=20+pos2+mid.length()+farve.length()+1;
		}
		return alt;
	}
}
Kan godt konvetere den for dig, men så skal jeg lige have at vide hvilket sprog jeg skal konvetere til

Edit: En version hvor det er muligt at lave "blabla\\"blabla"
						
						
						
						
		
							Indlæg senest redigeret d. 10.03.2006 16:47 af Bruger #4479