// ================================================================= // Logtalk - Object oriented extension to Prolog // Release 2.29.5 // // Copyright (c) 1998-2007 Paulo Moura. All Rights Reserved. // ================================================================= if (ScriptEngineMajorVersion() < 5 || ScriptEngineMajorVersion() == 5 && ScriptEngineMinorVersion() < 6) { WScript.Echo('Error! WSH 5.6 or later version needed for running this script.'); WScript.Quit(1); } var WshShell = new ActiveXObject("WScript.Shell"); var format = "xhtml"; // var format = "html"; var directory = WshShell.CurrentDirectory; var index_file = "index.html"; var index_title = "Entity documentation index"; if (WScript.Arguments.Unnamed.Length > 0) { usage_help(); WScript.Quit(0); } var WshSystemEnv = WshShell.Environment("SYSTEM"); var WshUserEnv = WshShell.Environment("USER"); var logtalk_home; var logtalk_user; if (WshSystemEnv.Item("LOGTALKHOME")) logtalk_home = WshSystemEnv.Item("LOGTALKHOME"); else if (WshUserEnv.Item("LOGTALKHOME")) logtalk_home = WshUserEnv.Item("LOGTALKHOME") else { WScript.Echo("Error! The environment variable LOGTALKHOME must be defined first!"); usage_help(); WScript.Quit(1); } if (WshSystemEnv.Item("LOGTALKUSER")) logtalk_user = WshSystemEnv.Item("LOGTALKUSER"); else if (WshUserEnv.Item("LOGTALKUSER")) logtalk_user = WshUserEnv.Item("LOGTALKUSER") else { WScript.Echo("Error! The environment variable LOGTALKUSER must be defined first!"); usage_help(); WScript.Quit(1); } var f_arg = ""; var i_arg = ""; var t_arg = ""; if (WScript.Arguments.Named.Exists("f")) f_arg = WScript.Arguments.Named.Item("f"); if (WScript.Arguments.Named.Exists("i")) i_arg = WScript.Arguments.Named.Item("i"); if (WScript.Arguments.Named.Exists("t")) t_arg = WScript.Arguments.Named.Item("t"); if (f_arg != "" && f_arg != "xhtml" && f_arg != "html") { WScript.Echo("Error! Unsupported output format: " + f_arg); WScript.Echo(""); usage_help(); } else if (f_arg != "") format = f_arg; var FSObject = new ActiveXObject("Scripting.FileSystemObject"); if (i_arg != "") index_file=i_arg; if (t_arg != "") index_title=t_arg; if (!FSObject.FileExists(directory + "\\logtalk.dtd")) { FSObject.CopyFile(logtalk_home + "\\xml\\logtalk.dtd", directory + "\\logtalk.dtd"); } if (!FSObject.FileExists(directory + "\\custom.ent")) { FSObject.CopyFile(logtalk_home + "\\xml\\custom.ent", directory + "\\custom.ent"); } if (!FSObject.FileExists(directory + "\\logtalk.xsd")) { FSObject.CopyFile(logtalk_home + "\\xml\\logtalk.xsd", directory + "\\logtalk.xsd"); } if (!FSObject.FileExists(directory + "\\logtalk.css")) { FSObject.CopyFile(logtalk_user + "\\xml\\logtalk.css", directory + "\\logtalk.css"); } if (!FSObject.FileExists(directory + "\\lgtxml.xsl")) { FSObject.CopyFile(logtalk_user + "\\xml\\lgtxml.xsl", directory + "\\lgtxml.xsl"); } WScript.Echo(""); WScript.Echo("generating index file..."); create_index_file(); WScript.Echo("index file generated"); WScript.Echo(""); WScript.Quit(0); function usage_help() { WScript.Echo(""); WScript.Echo("This script generates an index for all the Logtalk XML files"); WScript.Echo("documenting files in the current directory"); WScript.Echo(""); WScript.Echo("Usage:"); WScript.Echo(" " + WScript.ScriptName + " [/f:format] [/i:index] [/t:title]"); WScript.Echo(" " + WScript.ScriptName + " help"); WScript.Echo(""); WScript.Echo("Optional arguments:"); WScript.Echo(" f - format of the index file (either xhtml or html; default is " + format + ")"); WScript.Echo(" i - name of the index file (default is " + index_file + ")"); WScript.Echo(" t - title to be used on the index file (default is " + index_title + ")"); WScript.Echo(""); WScript.Quit(1); } function create_index_file() { var f = FSObject.CreateTextFile(index_file, true); switch (format) { case "xhtml" : f.WriteLine(""); f.WriteLine(""); f.WriteLine(""); f.WriteLine(""); break; case "html" : f.WriteLine(""); f.WriteLine(""); break; } f.WriteLine(""); f.WriteLine(" "); f.WriteLine(" " + index_title + ""); f.WriteLine(" "); f.WriteLine(""); f.WriteLine(""); f.WriteLine("

" + index_title + "

"); f.WriteLine(""); var today = new Date(); var year = today.getFullYear(); var month = today.getMonth() + 1; if (month < 10) month = "0" + month; day = today.getDate(); if (day < 10) day = "0" + day; strToday = year + "/" + month + "/" + day; var hours = today.getHours(); if (hours < 10) hours = "0" + hours; var mins = today.getMinutes(); if (mins < 10) mins = "0" + mins; var secs = today.getSeconds(); if (secs < 10) secs = "0" + secs; strTime = hours + ":" + mins + ":" + secs; f.WriteLine("

Generated on " + strToday + " - " + strTime + "

"); f.WriteLine(""); f.WriteLine(""); f.Close(); }