Syntax Highlighter Widget для Blogger'а

HighLight2

Здесь я попробовал применить знания, полученные на Syntax Highlighter в Blogger'е. Вариант так сказать для ленивых: Щелкнуть по ссылке –> Добавить на страницу виджет –> Установить виджет –> Использовать.

Наука по использованию возможностей виджета - очень простая. Любой текст, помещенный в теги:

<pre class="тип_хайлайтера" name="code">
... Какой-то код, соответствующий типу хайлайтера ...
</pre>
или
<textarea name="code" class="тип_хайлайтера" cols="60" rows="10">
... Какой-то код, соответствующий типу хайлайтера ...
</textarea>

раскрасится виджетом без всяких там занудных правок шаблона блога, как в ранее рассмотренных вариантах подветки. Вот так то... Все гениальное - просто!


Подробности использования здесь, типы хайлайтеров здесь.


Пример использования для class="delphi":

  1. FUNCTION  Utf8ToAnsi (Source : STRING; UnknownChar : CHAR = 'ї') : ANSISTRING;  
  2.           (* Converts the given UTF-8 String to Windows ANSI (Win-1252). 
  3.              If a character can not be converted, the "UnknownChar" is inserted. *)  
  4. VAR  
  5.   SourceLen : INTEGER;  // Length of Source string  
  6.   I, K      : INTEGER;  
  7.   A         : BYTE;     // Current ANSI character value  
  8.   U         : WORD;  
  9.   {$IFDEF UNICODE} // #2009-09-17 DremLIN  
  10.   Ch        : WIDECHAR; // Dest char  
  11.   {$ELSE}  
  12.   Ch        : CHAR;     // Dest char  
  13.   {$ENDIF}  
  14.   Len       : INTEGER;  // Current real length of "Result" string  
  15. BEGIN  
  16.   SourceLen := Length (Source);  
  17.   SetLength (Result, SourceLen);   // Enough room to live  
  18.   Len := 0;  
  19.   I   := 1;  
  20.   WHILE I <= SourceLen DO BEGIN  
  21.     A := ORD (Source [I]);  
  22.     IF A < $80 THEN BEGIN                                               // Range $0000..$007F  
  23.       INC (Len);  
  24.       {$IFDEF UNICODE} // #2009-09-17 DremLIN  
  25.       Result [Len] := AnsiChar(Source[I]);  
  26.       {$ELSE}  
  27.       Result [Len] := Source [I];  
  28.       {$ENDIF}  
  29.       INC (I);  
  30.       END  
  31.     ELSE BEGIN                                                          // Determine U, Inc I  
  32.       IF (A AND $E0 = $C0) AND (I < SourceLen) THEN BEGIN               // Range $0080..$07FF  
  33.         U := (WORD (A AND $1F) SHL 6) OR (ORD (Source [I+1]) AND $3F);  
  34.         INC (I, 2);  
  35.         END  
  36.       ELSE IF (A AND $F0 = $E0) AND (I < SourceLen-1) THEN BEGIN        // Range $0800..$FFFF  
  37.         U := (WORD (A AND $0F) SHL 12) OR  
  38.              (WORD (ORD (Source [I+1]) AND $3F) SHL 6) OR  
  39.              (      ORD (Source [I+2]) AND $3F);  
  40.         INC (I, 3);  
  41.         END  
  42.       ELSE BEGIN                                                        // Unknown/unsupported  
  43.         INC (I);  
  44.         FOR K := 7 DOWNTO 0 DO  
  45.           IF A AND (1 SHL K) = 0 THEN BEGIN  
  46.             INC (I, (A SHR (K+1))-1);  
  47.             BREAK;  
  48.             END;  
  49.         U := WIN1252_UNICODE [ORD (UnknownChar)];  
  50.         END;  
  51.       Ch := UnknownChar;                                                // Retrieve ANSI char  
  52.       FOR A := $00 TO $FF DO  
  53.         IF WIN1252_UNICODE [A] = U THEN BEGIN  
  54.           Ch := CHR (A);  
  55.           BREAK;  
  56.           END;  
  57.       INC (Len);  
  58.       {$IFDEF UNICODE} // #2009-09-17 DremLIN  
  59.       Result [Len] := AnsiChar(Ch);  
  60.       {$ELSE}  
  61.       Result [Len] := Ch;  
  62.       {$ENDIF}  
  63.       END;  
  64.     END;  
  65.   SetLength (Result, Len);  
  66. END;  

Смотрю на красивую подсветку кода Delphi. Радуюсь.


- DejaVu???

- Ку!!!...

Комментариев нет: