/* 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 DirIndexList(U8 *files_find_mask)
{
        CDirEntry       *tmpde1 = NULL, *tmpde2;
        I64                      res = 0;
        U8                      *st, *st_full;

        tmpde1 = FilesFind(files_find_mask);

        if (tmpde1)
        {
                "%s\n", tmpde1->full_name;

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

                        if (tmpde1->attr & RS_ATTR_DIR)
                        {
                                st              = MStrPrint("%s/%s", tmpde1->name, "index.html");
                                st_full = MStrPrint("%s/%s", tmpde1->full_name, "index.html");
                                PutFileLink(st, st_full);
                                Free(st);
                                Free(st_full);
//                              PutDirLink(tmpde1->name, tmpde1->full_name);
                        }
                        else
                                PutFileLink(tmpde1->name, tmpde1->full_name);

                        '\n';
                        DirEntryDel(tmpde1);
                        tmpde1 = tmpde2;
                }
        }
        else
                "No matching entries\n";

        return res;
}
*/

U0 DirIndex(U8 *dest_path, U8 *full_name)
{
        U8              *index_path,
                        *index_path_out,
                        *index_exe;
        CTask   *index_task;
        CDoc    *index_doc;

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

        index_exe = MStrPrint("#include \"C:/Demo/ToHtmlToTXTDemo/HtmlDirList\";;;"
                                                  "Cls;DirIndexList(\"%s\");View;\n", 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);

}

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];

        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
                        {
                                DirIndex(dest_path, tmpde1->full_name);

                                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()
{
        DocMax;
        DocMax;
        DelTree("::/HTML/");

        DirIndex("::/HTML/", "::/");

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

//HtmlGen;