public void DoTranslate(string[] args) { try { InitCfgHandlers(); if (IsNoArgs(args)) { ShowTutorial(); return; } ParseArgsToTranslatorInput(args); LoadIgnoreFileLists(); GDSTranslator translator = new GDSTranslator(); GDSTranslator.Output output = translator.Translate(inputToTranslator); foreach (string lng in output.codeFileNames.Keys) { if (postprocessors.ContainsKey(lng)) { postprocessors[lng].Postprocess(inputToTranslator, output); } } inputToTranslator = null; WriteTranslateResult(output); } catch (FileNotFoundException e) { throw e; } catch (Exception e) { throw e; } }
private void WriteTranslateResult(GDSTranslator.Output result) { foreach (KeyValuePair <string, List <string> > kvp in result.codeFileNames) { var style = CodeFileDirStyle.ALL_IN_ONE; if (dirStyle.ContainsKey(kvp.Key)) { style = dirStyle[kvp.Key]; } string dirPath = Path.Combine(outputFileDirectory, kvp.Key); if (Directory.Exists(dirPath)) { Directory.Delete(dirPath, true); } Directory.CreateDirectory(dirPath); List <string> names = kvp.Value; List <string> contents = result.codeFileContents[kvp.Key]; int len = names.Count; for (int i = 0; i < len; ++i) { switch (style) { case CodeFileDirStyle.SEPARATE: { var subDir = names[i].Split('.')[0]; Directory.CreateDirectory(Path.Combine(dirPath, subDir)); WriteCodeFile(Path.Combine(dirPath, subDir, names[i]), contents[i]); } break; default: { WriteCodeFile(Path.Combine(dirPath, names[i]), contents[i]); } break; } } } }
public override void Postprocess(GDSTranslator.Input input, GDSTranslator.Output result) { string csharpNamespace = ""; for (int i = 0; i < input.dstLanguageNames.Length; ++i) { if ("csharp" == input.dstLanguageNames[i]) { csharpNamespace = input.namespaceNames[i]; break; } } result.codeFileNames["csharp"].Add(CSVPARSER_NAME); result.codeFileContents["csharp"].Add(DumpCSVParser(csharpNamespace)); result.codeFileNames["csharp"].Add(GDS_MANAGER_NAME); result.codeFileContents["csharp"].Add(DumpGDSManager(input, csharpNamespace)); base.Postprocess(input, result); }
private void Check(GDSTranslator.Input input, GDSTranslator.Output result) { // TODO : verification. }
public virtual void Postprocess(GDSTranslator.Input input, GDSTranslator.Output result) { Check(input, result); }