-package org.simantics.scl.compiler.markdown.html;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.Files;\r
-import java.nio.file.Path;\r
-import java.util.List;\r
-\r
-import org.simantics.scl.compiler.module.repository.ModuleRepository;\r
-\r
-public class GenerateAllHtmlDocumentation {\r
- public static void generate(ModuleRepository moduleRepository, Path directory) throws IOException {\r
- HierarchicalDocumentationRef root = HierarchicalDocumentationRef.generateTree(moduleRepository.getSourceRepository());\r
- generate(moduleRepository, directory, root.getChildren(), 0, root);\r
- generateIndex(directory, 0, "StandardLibrary/Prelude.html");\r
- }\r
-\r
- private static void generateIndex(Path directory, int level, String url) throws IOException {\r
- Path documentationFile = directory.resolve("index.html");\r
- for(int i=0;i<level;++i)\r
- url = "../" + url;\r
- String content = "<html><head><meta http-equiv=\"refresh\" content=\"1;url="+url+"\">" +\r
- "<script type=\"text/javascript\">window.location.href = \""+url+"\"</script>" +\r
- "</head><body>If you are not redirected automatically, <a href=\""+url+"\">follow the link</a>.</body></html>";\r
- Files.write(documentationFile, content.getBytes());\r
- }\r
-\r
- private static void generate(ModuleRepository moduleRepository, Path directory, List<HierarchicalDocumentationRef> refs, int level, HierarchicalDocumentationRef root) throws IOException {\r
- String navigation = generateNavigation(level, root);\r
- for(HierarchicalDocumentationRef ref : refs) {\r
- String name = ref.getName();\r
- \r
- // Documentation for this ref\r
- String documentationName = ref.getDocumentationName();\r
- if(documentationName != null) {\r
- String documentation = HtmlDocumentationGeneration.generate(moduleRepository, documentationName, navigation);\r
- Path documentationFile = directory.resolve(name + ".html"); \r
- Files.write(documentationFile, documentation.getBytes());\r
- }\r
- \r
- // Children of the ref\r
- List<HierarchicalDocumentationRef> children = ref.getChildren();\r
- if(!children.isEmpty()) {\r
- Path childDirectory = directory.resolve(name);\r
- if(!Files.exists(childDirectory))\r
- Files.createDirectory(childDirectory);\r
- generate(moduleRepository, childDirectory, children, level+1, root);\r
- if(documentationName != null)\r
- generateIndex(childDirectory, 1, ref.getName() + ".html");\r
- else\r
- generateIndex(childDirectory, level+1, "StandardLibrary/Prelude.html");\r
- }\r
- }\r
- }\r
-\r
- private static String generateNavigation(int level,\r
- HierarchicalDocumentationRef root) {\r
- StringBuilder b = new StringBuilder();\r
- generateNavigation(b, level, root.getChildren());\r
- return b.toString();\r
- }\r
-\r
- private static void generateNavigation(StringBuilder b, int level,\r
- List<HierarchicalDocumentationRef> refs) {\r
- b.append("<ul>");\r
- for(HierarchicalDocumentationRef ref : refs) {\r
- b.append("<li>");\r
- String documentationName = ref.getDocumentationName();\r
- if(documentationName != null) {\r
- if(!documentationName.contains("/"))\r
- documentationName = "StandardLibrary/" + documentationName;\r
- b.append("<a href=\"");\r
- for(int i=0;i<level;++i)\r
- b.append("../");\r
- b.append(documentationName);\r
- b.append(".html\">");\r
- }\r
- b.append(ref.getName());\r
- if(documentationName != null)\r
- b.append("</a>");\r
- List<HierarchicalDocumentationRef> children = ref.getChildren();\r
- if(children != null)\r
- generateNavigation(b, level, children);\r
- b.append("</li>");\r
- }\r
- b.append("</ul>");\r
- }\r
-}\r
+package org.simantics.scl.compiler.markdown.html;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.List;
+
+import org.simantics.scl.compiler.module.repository.ModuleRepository;
+
+public class GenerateAllHtmlDocumentation {
+ public static void generate(ModuleRepository moduleRepository, Path directory) throws IOException {
+ HierarchicalDocumentationRef root = HierarchicalDocumentationRef.generateTree(moduleRepository.getSourceRepository());
+ generate(moduleRepository, directory, root.getChildren(), 0, root);
+ generateIndex(directory, 0, "StandardLibrary/Prelude.html");
+ }
+
+ private static void generateIndex(Path directory, int level, String url) throws IOException {
+ Path documentationFile = directory.resolve("index.html");
+ for(int i=0;i<level;++i)
+ url = "../" + url;
+ String content = "<html><head><meta http-equiv=\"refresh\" content=\"1;url="+url+"\">" +
+ "<script type=\"text/javascript\">window.location.href = \""+url+"\"</script>" +
+ "</head><body>If you are not redirected automatically, <a href=\""+url+"\">follow the link</a>.</body></html>";
+ Files.write(documentationFile, content.getBytes());
+ }
+
+ private static void generate(ModuleRepository moduleRepository, Path directory, List<HierarchicalDocumentationRef> refs, int level, HierarchicalDocumentationRef root) throws IOException {
+ String navigation = generateNavigation(level, root);
+ for(HierarchicalDocumentationRef ref : refs) {
+ String name = ref.getName();
+
+ // Documentation for this ref
+ String documentationName = ref.getDocumentationName();
+ if(documentationName != null) {
+ String documentation = HtmlDocumentationGeneration.generate(moduleRepository, documentationName, navigation);
+ Path documentationFile = directory.resolve(name + ".html");
+ Files.write(documentationFile, documentation.getBytes());
+ }
+
+ // Children of the ref
+ List<HierarchicalDocumentationRef> children = ref.getChildren();
+ if(!children.isEmpty()) {
+ Path childDirectory = directory.resolve(name);
+ if(!Files.exists(childDirectory))
+ Files.createDirectory(childDirectory);
+ generate(moduleRepository, childDirectory, children, level+1, root);
+ if(documentationName != null)
+ generateIndex(childDirectory, 1, ref.getName() + ".html");
+ else
+ generateIndex(childDirectory, level+1, "StandardLibrary/Prelude.html");
+ }
+ }
+ }
+
+ private static String generateNavigation(int level,
+ HierarchicalDocumentationRef root) {
+ StringBuilder b = new StringBuilder();
+ generateNavigation(b, level, root.getChildren());
+ return b.toString();
+ }
+
+ private static void generateNavigation(StringBuilder b, int level,
+ List<HierarchicalDocumentationRef> refs) {
+ b.append("<ul>");
+ for(HierarchicalDocumentationRef ref : refs) {
+ b.append("<li>");
+ String documentationName = ref.getDocumentationName();
+ if(documentationName != null) {
+ if(!documentationName.contains("/"))
+ documentationName = "StandardLibrary/" + documentationName;
+ b.append("<a href=\"");
+ for(int i=0;i<level;++i)
+ b.append("../");
+ b.append(documentationName);
+ b.append(".html\">");
+ }
+ b.append(ref.getName());
+ if(documentationName != null)
+ b.append("</a>");
+ List<HierarchicalDocumentationRef> children = ref.getChildren();
+ if(children != null)
+ generateNavigation(b, level, children);
+ b.append("</li>");
+ }
+ b.append("</ul>");
+ }
+}