public string ConvertToTypescript(string text, ISettingStore settingStore = null) { if (settingStore == null) { settingStore = new DefaultSettingStore(); } try { var tree = (CSharpSyntaxTree)CSharpSyntaxTree.ParseText(text); if (tree.GetDiagnostics().Any(f => f.Severity == DiagnosticSeverity.Error)) { return(null); } var root = tree.GetRoot(); if (IsEmptyRoot(root)) { return(null); } if (settingStore.IsConvertToInterface) { root = ClassToInterfaceReplacement.ReplaceClass(root); } if (settingStore.IsConvertMemberToCamelCase) { root = MakeMemberCamelCase.Make(root); } if (settingStore.IsConvertListToArray) { root = ListToArrayReplacement.ReplaceList(root); } if (settingStore.AddIPrefixInterfaceDeclaration) { root = AddIPrefixInterfaceDeclaration.AddIPrefix(root); } if (settingStore.IsInterfaceOptionalProperties) { root = OptionalInterfaceProperties.AddOptional(root); } tree = (CSharpSyntaxTree)root.SyntaxTree; var translationNode = TF.Get(root, null); var compilation = CSharpCompilation.Create("TemporaryCompilation", syntaxTrees: new[] { tree }, references: new[] { Mscorlib }); var model = compilation.GetSemanticModel(tree); translationNode.Compilation = compilation; translationNode.SemanticModel = model; translationNode.ApplyPatch(); return(translationNode.Translate()); } catch (Exception ex) { } return(null); }
public string ConvertToTypescript(string text, ISettingStore settingStore) { try { var tree = (CSharpSyntaxTree)CSharpSyntaxTree.ParseText(text); // detect to see if it's actually C# sourcode by checking whether it has any error if (tree.GetDiagnostics().Any(f => f.Severity == DiagnosticSeverity.Error)) { return(null); } var root = tree.GetRoot(); // if it only contains comments, just return the original texts if (IsEmptyRoot(root)) { return(null); } if (settingStore.IsConvertToInterface) { root = ClassToInterfaceReplacement.ReplaceClass(root); } if (settingStore.IsConvertMemberToCamelCase) { root = MakeMemberCamelCase.Make(root); } if (settingStore.IsConvertListToArray) { root = ListToArrayReplacement.ReplaceList(root); } if (settingStore.ReplacedTypeNameArray.Length > 0) { root = TypeNameReplacement.Replace(settingStore.ReplacedTypeNameArray, root); } if (settingStore.AddIPrefixInterfaceDeclaration) { root = AddIPrefixInterfaceDeclaration.AddIPrefix(root); } if (settingStore.IsInterfaceOptionalProperties) { root = OptionalInterfaceProperties.AddOptional(root); } tree = (CSharpSyntaxTree)root.SyntaxTree; var translationNode = TF.Get(root, null); var compilation = CSharpCompilation.Create("TemporaryCompilation", syntaxTrees: new[] { tree }, references: new[] { Mscorlib }); var model = compilation.GetSemanticModel(tree); translationNode.Compilation = compilation; translationNode.SemanticModel = model; translationNode.ApplyPatch(); return(translationNode.Translate()); } catch (Exception ex) { // TODO // swallow exception .!!!!!!!!!!!!!!!!!!!!!!! } return(null); }