Subversion Repositories Kolibri OS

Rev

Rev 4718 | Rev 4725 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4719 leency 1
enum { TAG, OPTION_VALUE, TEXT, COMMENT };
2
 
4718 leency 3
//you are butifull, you are butifull
4
dword ShowSource()
5
{
6
	dword new_buf, new_buf_start, i;
4719 leency 7
	byte ww, mode;
4718 leency 8
 
9
	if (souce_mode) return;
10
	souce_mode = true;
11
	new_buf_start = new_buf = malloc(bufsize*5);
12
	strcat(new_buf, "
");
13
	for (i=bufpointer; i
14
	{
15
		ww = ESBYTE[i];
16
		new_buf++;
17
		switch (ww)
18
		{
19
			case '<':
20
				if (ESBYTE[i+1]=='!') && (ESBYTE[i+2]=='-') && (ESBYTE[i+3]=='-')
21
				{
22
					strcat(new_buf, "<");
23
					new_buf+=20;
4719 leency 24
					mode = COMMENT;
4718 leency 25
				}
26
				else
27
				{
28
					strcat(new_buf, "<");
4719 leency 29
					new_buf+=20;
30
					mode = TAG;
4718 leency 31
				}
32
				break;
33
			case '>':
4719 leency 34
				if (mode == OPTION_VALUE) //fix non-closed quote in TAG
4718 leency 35
				{
36
					strcat(new_buf, """);
37
					new_buf+=12;
4719 leency 38
					mode = TAG;
4718 leency 39
				}
4719 leency 40
				if (mode == COMMENT) && (ESBYTE[i-1]=='-') && (ESBYTE[i-2]=='-')
4718 leency 41
				{
42
					strcat(new_buf, ">");
43
					new_buf+=10;
4719 leency 44
					mode = TEXT;
4718 leency 45
				}
4719 leency 46
				if (mode == TAG)
4718 leency 47
				{
48
					strcat(new_buf, ">");
4719 leency 49
					new_buf+=10;
50
					mode = TEXT;
4718 leency 51
				}
52
				break;
53
			case '\"':
54
			case '\'':
4719 leency 55
				if (mode == TAG)
4718 leency 56
				{
57
					strcat(new_buf, """);
58
					new_buf+=22;
4719 leency 59
					mode = OPTION_VALUE;
60
					break;
4718 leency 61
				}
4719 leency 62
				if (mode == OPTION_VALUE)
4718 leency 63
				{
64
					strcat(new_buf, """);
65
					new_buf+=12;
4719 leency 66
					mode = TAG;
67
					break;
4718 leency 68
				}
69
			default:
70
				chrcat(new_buf, ww);
71
		}
72
	}
73
	bufsize = new_buf;
74
	free(bufpointer);
75
	bufpointer = new_buf_start;
76
}