templeos-info/Copy.HC

107 lines
2.3 KiB
HolyC
Raw Normal View History

#include "/Demo/ToHtmlToTXTDemo/ToHtml.HC.Z"
U8 *FilenameToURL(U8 *filename, I64 line)
{
filename[StrLen(filename) - 2] = NULL;
U8 *htmlext = "";
if (StrMatch(".DD", filename))
htmlext = ".HTML";
return MStrPrint("/Wb%s%s#l%d", filename + 2, htmlext, 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;
}
2024-03-16 10:26:19 +00:00
CDirEntry *start_entry = FilesFind(
"/*.HC.Z;*/.HH.Z;*.DD.Z;!/Home/*",
2024-03-16 10:26:19 +00:00
FUF_RECURSE | FUF_JUST_FILES
);
2024-03-16 10:26:19 +00:00
CDirEntry *entry = start_entry;
U8 *html_header =
"<!DOCTYPEhtml>\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, initial-scale=1\">\n"
"<link rel=\"stylesheet\" href=\"/style/templeos.css\">\n"
"<script src=\"/script/templeos.js\"></script>\n";
2024-03-16 10:26:19 +00:00
U8 *body_header =
"<body>\n"
"<pre style=\"font-family: courier, monospace; font-size: 10pt;\">\n";
Del("C:/Home/Src", FALSE, TRUE);
do {
2024-03-16 10:26:19 +00:00
Print("%s", entry->full_name);
U8 *new_name = MAlloc(2 *StrLen(entry->full_name));
2024-03-16 10:26:19 +00:00
StrPrint(new_name, "/Home/Src%s", entry->full_name + 2);
if (StrMatch(".DD", entry->full_name)) {
FileExtRem(new_name);
CatPrint(new_name, ".DD.HTML");
} else {
new_name[StrLen(new_name) - 2] = NULL;
}
2024-03-16 10:26:19 +00:00
Print(" -> %s\n", new_name);
if (StrMatch(".DD", entry->full_name))
ToHtml(
entry->full_name,
new_name,
html_header,
body_header,
NULL,
NULL,
80,
TRUE,
&LinkCvt,
);
else
Copy(entry->full_name, new_name);
2024-03-16 10:26:19 +00:00
} while (entry = entry->next);
DirTreeDel(start_entry);