Здесь я попробовал применить знания, полученные на Syntax Highlighter в Blogger'е. Вариант так сказать для ленивых: Щелкнуть по ссылке –> Добавить на страницу виджет –> Установить виджет –> Использовать.
Наука по использованию возможностей виджета - очень простая. Любой текст, помещенный в теги:
<pre class="тип_хайлайтера" name="code">
... Какой-то код, соответствующий типу хайлайтера ...
</pre>
или
<textarea name="code" class="тип_хайлайтера" cols="60" rows="10">
... Какой-то код, соответствующий типу хайлайтера ...
</textarea>
раскрасится виджетом без всяких там занудных правок шаблона блога, как в ранее рассмотренных вариантах подветки. Вот так то... Все гениальное - просто!
Подробности использования здесь, типы хайлайтеров здесь.
Пример использования для class="delphi":
FUNCTION Utf8ToAnsi (Source : STRING; UnknownChar : CHAR = 'ї') : ANSISTRING;
(* Converts the given UTF-8 String to Windows ANSI (Win-1252).
If a character can not be converted, the "UnknownChar" is inserted. *)
VAR
SourceLen : INTEGER; // Length of Source string
I, K : INTEGER;
A : BYTE; // Current ANSI character value
U : WORD;
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Ch : WIDECHAR; // Dest char
{$ELSE}
Ch : CHAR; // Dest char
{$ENDIF}
Len : INTEGER; // Current real length of "Result" string
BEGIN
SourceLen := Length (Source);
SetLength (Result, SourceLen); // Enough room to live
Len := 0;
I := 1;
WHILE I <= SourceLen DO BEGIN
A := ORD (Source [I]);
IF A < $80 THEN BEGIN // Range $0000..$007F
INC (Len);
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Result [Len] := AnsiChar(Source[I]);
{$ELSE}
Result [Len] := Source [I];
{$ENDIF}
INC (I);
END
ELSE BEGIN // Determine U, Inc I
IF (A AND $E0 = $C0) AND (I < SourceLen) THEN BEGIN // Range $0080..$07FF
U := (WORD (A AND $1F) SHL 6) OR (ORD (Source [I+1]) AND $3F);
INC (I, 2);
END
ELSE IF (A AND $F0 = $E0) AND (I < SourceLen-1) THEN BEGIN // Range $0800..$FFFF
U := (WORD (A AND $0F) SHL 12) OR
(WORD (ORD (Source [I+1]) AND $3F) SHL 6) OR
( ORD (Source [I+2]) AND $3F);
INC (I, 3);
END
ELSE BEGIN // Unknown/unsupported
INC (I);
FOR K := 7 DOWNTO 0 DO
IF A AND (1 SHL K) = 0 THEN BEGIN
INC (I, (A SHR (K+1))-1);
BREAK;
END;
U := WIN1252_UNICODE [ORD (UnknownChar)];
END;
Ch := UnknownChar; // Retrieve ANSI char
FOR A := $00 TO $FF DO
IF WIN1252_UNICODE [A] = U THEN BEGIN
Ch := CHR (A);
BREAK;
END;
INC (Len);
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Result [Len] := AnsiChar(Ch);
{$ELSE}
Result [Len] := Ch;
{$ENDIF}
END;
END;
SetLength (Result, Len);
END;
Смотрю на красивую подсветку кода Delphi. Радуюсь.
- DejaVu???
- Ку!!!...
Комментариев нет:
Отправить комментарий