X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fcompilation%2FDocumentationGeneration.java;fp=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fcompilation%2FDocumentationGeneration.java;h=e4124d9b79559a9c862386133d55bff50af14d55;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DocumentationGeneration.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DocumentationGeneration.java new file mode 100644 index 000000000..e4124d9b7 --- /dev/null +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/DocumentationGeneration.java @@ -0,0 +1,57 @@ +package org.simantics.scl.compiler.compilation; + +import gnu.trove.map.hash.THashMap; +import gnu.trove.set.hash.THashSet; + +import java.util.ArrayList; + +import org.simantics.scl.compiler.elaboration.modules.SCLValue; +import org.simantics.scl.compiler.elaboration.modules.TypeClass; +import org.simantics.scl.compiler.elaboration.modules.TypeClassInstance; +import org.simantics.scl.compiler.elaboration.modules.TypeConstructor; +import org.simantics.scl.compiler.internal.parsing.declarations.DDocumentationAst; +import org.simantics.scl.compiler.module.ConcreteModule; +import org.simantics.scl.compiler.types.TCon; + +public class DocumentationGeneration { + THashMap valueDocumentation; + THashMap typeDocumentation; + THashMap classDocumentation; + ConcreteModule module; + + THashSet mentionedInDocumentation = new THashSet(); + THashMap> dataToInstance = + new THashMap>(); + + public DocumentationGeneration(/*StringBuilder moduleDocumentation,*/ + THashMap valueDocumentation, + THashMap typeDocumentation, + THashMap classDocumentation, + ConcreteModule module) { + this.valueDocumentation = valueDocumentation; + this.typeDocumentation = typeDocumentation; + this.classDocumentation = classDocumentation; + this.module = module; + } + + public void generateDocumentation() { + for(String name : classDocumentation.keySet()) { + TypeClass typeClass = module.getTypeClass(name); + DDocumentationAst doc = classDocumentation.get(name); + if(typeClass != null && doc != null) + typeClass.setDocumentation(doc.documentation); + } + for(String name : valueDocumentation.keySet()) { + SCLValue value = module.getValue(name); + DDocumentationAst doc = valueDocumentation.get(name); + if(value != null && doc != null) + value.setDocumentation(doc.documentation); + } + for(String name : typeDocumentation.keySet()) { + TypeConstructor typeConstructor = module.getTypeConstructor(name); + DDocumentationAst doc = typeDocumentation.get(name); + if(typeConstructor != null && doc != null) + typeConstructor.setDocumentation(doc.documentation); + } + } +}