95 lines
1.9 KiB
HolyC
Executable File
95 lines
1.9 KiB
HolyC
Executable File
#include "/Demo/ToHtmlToTXTDemo/ToHtml.HC.Z"
|
||
|
||
U8 *FilenameToURL(U8 *filename, I64 line)
|
||
{
|
||
filename[StrLen(filename) - 2] = NULL;
|
||
|
||
return MStrPrint("/Wb%s.HTML#l%d", filename + 2, line);
|
||
}
|
||
|
||
U8 *LinkCvt(U8 *link_st)
|
||
{
|
||
U8 *res = NULL, *filename, *needle;
|
||
I64 i, num;
|
||
|
||
if (link_st) {
|
||
i = EdLinkCvt(link_st, &filename, &needle, &num);
|
||
|
||
switch (i) {
|
||
case LK_FILE_LINE:
|
||
case LK_PLAIN_LINE:
|
||
case LK_FILE:
|
||
res = FilenameToURL(filename, num);
|
||
break;
|
||
case LK_DEF:
|
||
case LK_HELP_INDEX:
|
||
case LK_DOC:
|
||
case LK_DOC_ANCHOR:
|
||
case LK_DOC_FIND:
|
||
case LK_DOC_LINE:
|
||
break;
|
||
case LK_BIBLE_FIND:
|
||
res = TOSLinkCvt1(link_st);
|
||
break;
|
||
default:
|
||
if (DocFileEd(i, filename, needle, &num, EDF_UNCOLLAPSE | EDF_BAIL))
|
||
res = FilenameToURL(filename, num);
|
||
}
|
||
}
|
||
|
||
Free(filename);
|
||
Free(needle);
|
||
|
||
return res;
|
||
}
|
||
|
||
CDirEntry *start_entry = FilesFind(
|
||
"/*.HC.Z;*.HH.Z;*.DD.Z;!/Home/*",
|
||
FUF_RECURSE | FUF_JUST_FILES
|
||
);
|
||
|
||
|
||
CDirEntry *entry = start_entry;
|
||
|
||
U8 *html_header =
|
||
"<!DOCTYPE html>\n"
|
||
"<html lang=\"en\">\n"
|
||
"<head>\n"
|
||
"<meta charset=\"UTF-8\">\n"
|
||
"<meta name=\"generator\" content=\"TempleOS V5.03\">\n"
|
||
"<meta name=\"viewport\" content=\"width=device-width\">\n"
|
||
"<link rel=\"stylesheet\" href=\"/style/templeos.css\">\n"
|
||
"<script src=\"/script/templeos.js\"></script>\n";
|
||
|
||
U8 *body_header =
|
||
"<body>\n"
|
||
"<pre id=\"content\">\n";
|
||
|
||
Del("C:/Home/Src", FALSE, TRUE);
|
||
|
||
do {
|
||
|
||
U8 *new_name = MAlloc(2 *StrLen(entry->full_name));
|
||
StrPrint(new_name, "/Home/Src%s", entry->full_name + 2);
|
||
|
||
new_name[StrLen(new_name) - 2] = NULL;
|
||
CatPrint(new_name, ".HTML");
|
||
|
||
ToHtml(
|
||
entry->full_name,
|
||
new_name,
|
||
html_header,
|
||
body_header,
|
||
NULL,
|
||
NULL,
|
||
80,
|
||
TRUE,
|
||
&LinkCvt,
|
||
);
|
||
|
||
Print("%s -> %s\n", entry->full_name, new_name);
|
||
|
||
} while (entry = entry->next);
|
||
|
||
DirTreeDel(start_entry);
|