/* This converts ::/Demo/ToHtmlToTXTDemo/DemoInPage.DD to
an html document named "OutPage.html".

Notice that an entry like $TX,"GOOGLE",HTML="http://www.google.com"$
will be converted to text in the html with an html link.

Terry cheated by hardcoding www.templeos.org as the website
for ZealOS Links.  Why don't you copy
::/Demo/ToHtmlToTXTDemo/ToHtml.CC to your /Home directory
and modify it?  You are welcome to link to
http://www.templeos.org if you want file that come on the
ZealOS distribution.

You can pass html meta data as args to ToHtml().
*/

Cd(__DIR__);;
#include "ToHtml"

//ToHtml("DemoInPage.DD", "~/DemoOutPage");

I64     Dir2Html(U8 *src_files_find_mask, U8 *dst_files_find_mask)
{
        CDirEntry       *tmpde1 = NULL, *tmpde2;
        I64                      res = 0;
        U8                      *dest_path,
                                *dest_file,
                                *dest_abs,
                                *src_abs,
                                dest_ext[STR_LEN],
                                *index_path,
                                *index_path_out,
                                *index_exe;
        CTask           *index_task;
        CDoc            *index_doc;

        tmpde1 = FilesFind(src_files_find_mask, FUF_RECURSE);
        dest_abs        = DirNameAbs(dst_files_find_mask);
        src_abs         = DirNameAbs(src_files_find_mask);

        if (tmpde1)
        {
                while (tmpde1)
                {
                        tmpde2 = tmpde1->next;
                        res++;

                        dest_file = StrNew(tmpde1->name);
                        FileExtRemove(dest_file, dest_ext);

                        dest_path = MStrPrint("%s/%s", dest_abs, dest_file);

                        "%s\n", tmpde1->full_name;

                        if (!(tmpde1->attr & RS_ATTR_DIR))
                        {
                                if (StrCompare(dest_ext, "BIN.C")       &&
                                        StrCompare(dest_ext, "BIN")             &&
                                        StrCompare(dest_ext, "ISO.C")   &&
                                        StrCompare(dest_ext, "html")    &&
                                        StrCompare(dest_ext, "DATA")    &&
                                        StrCompare(dest_ext, "MAP"))
                                {
                                        "%s.html\n\n", dest_path;
                                        ToHtml(tmpde1->full_name, dest_path);
                                }
                        }
                        else
                        {
                                index_path              = MStrPrint("%s/index.DD", dest_path);
                                index_path_out  = MStrPrint("%s/index.html", dest_path);
                                "%s\n", index_path;

                                index_exe = MStrPrint("Cls;Dir(\"%s\");View;\n", tmpde1->full_name);
                                PopUp(index_exe,, &index_task);
                                TaskWait(index_task);

                                index_doc = DocNew(index_path);
                                DocInsDoc(index_doc, index_task->put_doc);
                                DocWrite(index_doc);
                                DocDel(index_doc);

                                TaskWait(index_task);
                                Kill(index_task);

                                ToHtml(index_path, index_path_out);
                                Del(index_path);

                                Free(index_path);
                                Free(index_path_out);
                                Free(index_exe);

                                if (StrCompare(tmpde1->full_name, dest_abs))
                                        Dir2Html(tmpde1->full_name, dest_path);
                        }

                        DirEntryDel(tmpde1);
                        tmpde1 = tmpde2;

                        Free(dest_path);
                        Free(dest_file);
                }
        }

        Free(dest_abs);

        return res;

}

I64 HtmlGen()
{
        U8                      *index_path,
                                *index_path_out;
        CTask           *index_task;
        CDoc            *index_doc;

        DocMax;
        DocMax;
        DelTree("::/HTML/");

        index_path              = MStrPrint("::/HTML/index.DD");
        index_path_out  = MStrPrint("::/HTML/index.html");
        "%s\n", index_path;

        PopUp("Cls;Dir(\"::/\");View;\n",, &index_task);
        TaskWait(index_task);

        index_doc = DocNew(index_path);
        DocInsDoc(index_doc, index_task->put_doc);
        DocWrite(index_doc);
        DocDel(index_doc);

        TaskWait(index_task);
        Kill(index_task);

        ToHtml(index_path, index_path_out);
        Del(index_path);

        Free(index_path);
        Free(index_path_out);

        return Dir2Html("::/", "::/HTML/");
}

//HtmlGen;