четверг, 1 июля 2010 г.

Раскрашиваем код для публикации в блоге (blogger.com / blogspot.com)

Проблема не уникальна, как и ее решения. В моем случае был выбран вариант с применением утилиты code2html, написанной на Perl, что естественно предполагает установку интерпретатора этого языка, например под Windows может быть инсталлирован ActivePerl, но в моём случае perl уже был в системе как часть MSYS.
Использовать code2html не трудно, важную информацию можно получить командой

perl code2html –help

При этом естественно оболочка должна знать, где лежит perl и code2html, т.е. надо указать путь к perl в переменной PATH, у меня там указан вот такой путь C:\msys\1.0\bin . И ещё вместо code2html должно быть C:\code2html-0.9.1\ code2html или что там у Вас.
А вот и мои первый реальный пример применения утилиты code2html

perl C:\code2html-0.9.1\code2html -w 80 -n -l C++ stl_pair.cpp > stl_pair.html

Есть одно, но может получиться, что полученный результат будет сильно разбавлен пустыми строками, но это можно исправить, просто перед получением html надо сделать EOL конверсию исходника к UNIX-формату, NotePad++ это поддерживает как в прочем и некоторые другие редакторы кода, например, в codeblocks есть в Settings – Editor – End-of-line options соответствующая настройка, надо выбрать CR.

Есть ещё вариант «немного программирования»

1 /// @FILE L1310.c
2 // Убирает встречающиеся друг за
» другом символы с кодами 13 и 10,
» оставляя только с кодом 13, те LF

3
4 #include <stdlib.h>
5 #include <stdio.h>
6
7 int main(int argv,char *argc[]) {
8
9 FILE* f=fopen(argc[1],"rb");
10 FILE* fo=fopen(argc[2],"wb");
11
12 int c;
13 int c1=-1;
14
15 while((c=fgetc(f))!=EOF) {
16 if(c==13) {
17 c1=c;
18 } else {
19 if(c1==13 && c==10) {
20 //putchar(13);
21 //fputc(13,fo);
22 c=13;
23 } else {
24 c1=-1;
25 }
26 //Пишем в файл и в консоль
27 fputc(c,fo);
28 putchar(c);
29
30 }
31 }
32 fclose(f);
33 fclose(fo);
34 return 0;
35 }

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

Отправить комментарий