public static void createHTML()

in modules/compiler/src/java/flex2/compiler/asdoc/AsDocAPI.java [429:724]


	public static void createHTML(String outputDir, String templatesDir, ASDocConfiguration config)
			throws Exception
	{
		// the XSL processing only works with forward slashes
		templatesDir = templatesDir.replace('\\', '/');
		String outputDitaDir = outputDir + "tempdita/";
		File indexTmp = new File(outputDir + "index.tmp");
		// 0_processHTML
		String inputFile = indexTmp.toString();
		while (inputFile.indexOf('\\') != -1)
		{
			inputFile = inputFile.replace('\\', '/');
		}

		try
		{
			// copy xslt files to tempdita
			copyFile(templatesDir + "all-classes.xslt", outputDitaDir  + "all-classes.xslt");
			copyFile(templatesDir + "all-index.xslt", outputDitaDir  + "all-index.xslt");
			copyFile(templatesDir + "asdoc-util.xslt", outputDitaDir  + "asdoc-util.xslt");
			copyFile(templatesDir + "ASDoc_terms.xml", outputDitaDir  + "ASDoc_terms.xml");
			
			copyFile(templatesDir + "class-files.xslt", outputDitaDir  + "class-files.xslt");
			copyFile(templatesDir + "class-list.xslt", outputDitaDir  + "class-list.xslt");
			copyFile(templatesDir + "class-parts.xslt", outputDitaDir  + "class-parts.xslt");
			copyFile(templatesDir + "class-summary.xslt", outputDitaDir  + "class-summary.xslt");
			copyFile(templatesDir + "Classes.xslt", outputDitaDir  + "Classes.xslt");
			copyFile(templatesDir + "ClassHeader.xslt", outputDitaDir  + "ClassHeader.xslt");
			
			copyFile(templatesDir + "eventsGeneratedSummary.xslt", outputDitaDir  + "eventsGeneratedSummary.xslt");
			copyFile(templatesDir + "effectsSummary.xslt", outputDitaDir  + "effectsSummary.xslt");
			
			copyFile(templatesDir + "fieldSummary.xslt", outputDitaDir  + "fieldSummary.xslt");
			
			copyFile(templatesDir + "merge_dita_xml.xslt", outputDitaDir  + "merge_dita_xml.xslt");
			copyFile(templatesDir + "methodSummary.xslt", outputDitaDir  + "methodSummary.xslt");
			
			copyFile(templatesDir + "processHTML.xslt", outputDitaDir  + "processHTML.xslt");
			copyFile(templatesDir + "PostProcessing.xslt", outputDitaDir  + "PostProcessing.xslt");
			copyFile(templatesDir + "package-list.xslt", outputDitaDir  + "package-list.xslt");
			copyFile(templatesDir + "package-detail.xslt", outputDitaDir  + "package-detail.xslt");
			copyFile(templatesDir + "package-summary.xslt", outputDitaDir  + "package-summary.xslt");
			copyFile(templatesDir + "package.xslt", outputDitaDir  + "package.xslt");
			
			copyFile(templatesDir + "stylesSummary.xslt", outputDitaDir  + "stylesSummary.xslt");
			
			copyFile(templatesDir + "index.html", outputDitaDir  + "index.html");
			copyFile(templatesDir + "package-frame.html", outputDitaDir  + "package-frame.html");
			copyFile(templatesDir + "title-bar.html", outputDitaDir  + "title-bar.html");
		
			// warnings:silent|recover
			String warnings = "silent";
			
			//process_html_dita
			String[] args = new String[] { "-s", outputDitaDir + "index.html",
					"-o",  inputFile,
                   "-xsl", outputDitaDir + "processHTML.xslt",
                   "index-file=index.html",
                   "prog_language_name=ActionScript" };
			net.sf.saxon.Transform.main(args);
			
			args = new String[] { "-s", outputDitaDir + "package-frame.html",
					"-o", outputDir + "package-frame.html",
					"-xsl", outputDitaDir + "processHTML.xslt",
					"package-frame=package-frame.html",
					"prog_language_name=ActionScript"};
			net.sf.saxon.Transform.main(args);
			
			args = new String[] { "-s", templatesDir + "index-list.html",
					"-o", outputDir + "index-list.html",
					"-xsl", outputDitaDir + "processHTML.xslt" };
			net.sf.saxon.Transform.main(args);
			
			args = new String[] { "-s", outputDitaDir + "title-bar.html",
					"-o", outputDir + "title-bar.html",
					"-xsl", outputDitaDir + "processHTML.xslt",
					"titleBarFile=title-bar.html",
					"prog_language_name=ActionScript" };
			net.sf.saxon.Transform.main(args);
			
			//create_merge_dita_xml
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-o", outputDitaDir + "packagemap.xml",
					"-xsl", outputDitaDir + "merge_dita_xml.xslt" };
			net.sf.saxon.Transform.main(args);

			//create_classes_dita_xml
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-o", outputDitaDir + "Classes.xml",
					"-xsl", outputDitaDir + "Classes.xslt" };
			net.sf.saxon.Transform.main(args);

			//create_classheader_xml
			args = new String[] { "-s", outputDitaDir  + "Classes.xml",
					"-o", outputDitaDir + "ClassHeader.xml",
					"-xsl", outputDitaDir + "ClassHeader.xslt" };
			net.sf.saxon.Transform.main(args);

			//create_fieldSummary_dita_xml
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-o", outputDitaDir + "pp_fieldSummary.xml",
					"-warnings:" + warnings,
					"-xsl", outputDitaDir + "fieldSummary.xslt"};
			net.sf.saxon.Transform.main(args);
			
			args = new String[] { "-s", outputDitaDir  + "pp_fieldSummary.xml",
					"-warnings:" + warnings,
					"-o", outputDitaDir + "fieldSummary.xml",
					"-xsl", outputDitaDir + "PostProcessing.xslt" };
			net.sf.saxon.Transform.main(args);			
			//create_methodSummary_dita_xml
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDitaDir + "pp_methodSummary.xml",
					"-xsl", outputDitaDir + "methodSummary.xslt" };
			net.sf.saxon.Transform.main(args);
			
			args = new String[] { "-s", outputDitaDir  + "pp_methodSummary.xml",
					"-warnings:" + warnings,
					"-o", outputDitaDir + "methodSummary.xml",
					"-xsl", outputDitaDir + "PostProcessing.xslt" };
			net.sf.saxon.Transform.main(args);			

			//create_eventsGeneratedSummary_dita_xml
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDitaDir + "eventsGeneratedSummary.xml",
					"-xsl", outputDitaDir + "eventsGeneratedSummary.xslt" };
			net.sf.saxon.Transform.main(args);

			//create_stylesSummary_dita_xml
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDitaDir + "stylesSummary.xml",
					"-xsl", outputDitaDir + "stylesSummary.xslt" };
			net.sf.saxon.Transform.main(args);
			
			//create_effectsSummary_dita_xml
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDitaDir + "effectsSummary.xml",
					"-xsl", outputDitaDir + "effectsSummary.xslt" };
			net.sf.saxon.Transform.main(args);
			
			//create_class_files_dita
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDir + "dummy.html",
					"-xsl", outputDitaDir + "class-files.xslt",
					"showIncludeExamples=true",
					"prog_language_name=ActionScript",
					"process_xref_href_attribute=1"};
			net.sf.saxon.Transform.main(args);

			//create_all_classes_dita
			args = new String[] { "-s", outputDitaDir  + "packagemap.xml",
					"-warnings:" + warnings,
					"-o", outputDir + "all-classes.html",
					"-xsl", outputDitaDir + "all-classes.xslt",
					"prog_language_name=ActionScript" };
			net.sf.saxon.Transform.main(args);			

			//create_package_list_dita
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDir + "package-list.html",
					"-xsl", outputDitaDir + "package-list.xslt" };
			net.sf.saxon.Transform.main(args);			

			//create_class_summary_dita
			args = new String[] { "-s", outputDitaDir  + "packagemap.xml",
					"-warnings:" + warnings,
					"-o", outputDir + "class-summary.html",
					"-xsl", outputDitaDir + "class-summary.xslt",
					"localTitle=allClasses",
					"filter=*" };
			net.sf.saxon.Transform.main(args);			
			
			//create_package_detail_dita
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDir + "dummy.html",
					"-xsl", outputDitaDir + "package-detail.xslt",
					"prog_language_name=ActionScript" };
			net.sf.saxon.Transform.main(args);			
			
			//create_package_summary_dita
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDir + "package-summary.html",
					"-xsl", outputDitaDir + "package-summary.xslt",
					"localTitle=allPackages",
					"filter=*",
					"prog_language_name=ActionScript" };
			net.sf.saxon.Transform.main(args);			
			
			//create_class_list_dita
			args = new String[] { "-s", outputDitaDir  + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDir + "dummy.html",
					"-xsl", outputDitaDir + "class-list.xslt",
					"prog_language_name=ActionScript" };
			net.sf.saxon.Transform.main(args);			
			

			//create_all_index_dita
			args = new String[] { "-s", outputDitaDir  + "packagemap.xml",
					"-warnings:" + warnings,
					"-o", outputDir + "dummy.html",
					"-xsl", outputDitaDir + "all-index.xslt",
					"prog_language_name=ActionScript" };
			net.sf.saxon.Transform.main(args);
			
			//create_package_dita
			args = new String[] { "-s", outputDitaDir + "packages.dita",
					"-warnings:" + warnings,
					"-o", outputDir + "dummy.html",
					"-xsl", outputDitaDir + "package.xslt",
					"prog_language_name=ActionScript" };
			net.sf.saxon.Transform.main(args);			

			(new File(outputDir + "dummy.html")).delete();
		}
		catch(Exception ex) 
		{
			ex.printStackTrace();
			throw ex;
		}
		

		File indexHtml = new File(outputDir + "index.html");
		if (config.getLeftFramesetWidth() == -1)
		{
			// we can't just originally name this as index.html because then the renaming in the other
			// case fails (because of Java)
			FileUtils.renameFile(indexTmp, indexHtml);
		}
		else
		{
			// here we do something that doesn't fit well into XSL, which is replacing the first frameset
			// value we find in index.html

			BufferedReader reader = null;
			BufferedWriter writer = null;
			File indexTmp2 = new File(outputDir + "index2.tmp");
			try
			{
				reader = new BufferedReader(new FileReader(indexTmp));
				writer = new BufferedWriter(new FileWriter(indexTmp2));
				boolean foundFrameset = false;
				String s;
				String search1 = "frameset cols=";
				String search2 = ",";
				while ((s = reader.readLine()) != null)
				{
					if (! foundFrameset)
					{
						int ind = s.indexOf(search1);
						if (ind != -1)
						{
							foundFrameset = true;
							int ind2 = s.indexOf(search2, ind);
							if (ind2 != -1)
							{
								s = s.substring(0, ind + search1.length() + 1) + config.getLeftFramesetWidth() + s.substring(ind2);
							}
						}

					}
					writer.write(s);
					writer.newLine();
				}
			}
			catch (Exception ex)
			{
				ex.printStackTrace();

				CompilerMessage c = new CouldNotCreate("index.html", ex.getMessage());
				ThreadLocalToolkit.log(c);
				throw c;
			}
			finally
			{
				if (writer != null)
				{
					try { writer.close(); } catch(IOException ioe) {}
				}
				if (reader != null)
				{
					try { reader.close(); } catch(IOException ioe) {}
				}

				FileUtils.renameFile(indexTmp2, indexHtml);
			}
		}
	}