internal static string GetPackageName(this Syntax.Document doc) { string configNs = ConverterContext.Current.Config.Namespace; if (!string.IsNullOrEmpty(configNs)) { return(configNs); } return(doc.RelativePath.Replace(Path.DirectorySeparatorChar, '.')); }
public SyntaxList <UsingDirectiveSyntax> Convert(ImportClause node) { SyntaxList <UsingDirectiveSyntax> usings = new SyntaxList <UsingDirectiveSyntax>(); if (node.Name != null) // default { ImportDeclaration import = node.Ancestor(NodeKind.ImportDeclaration) as ImportDeclaration; Syntax.Document fromDoc = import?.FromDocument; Node definition = fromDoc?.GetExportDefaultTypeDefinition(); if (definition != null) { string definitionPackage = definition.Document.GetPackageName(); string package = import.Document.GetPackageName(); string name = node.Name.Text; string propertyName = (string)definition.GetValue("NameText"); if (package != definitionPackage || name != propertyName) { UsingDirectiveSyntax usingSyntax = SyntaxFactory.UsingDirective( SyntaxFactory.NameEquals(name), SyntaxFactory.ParseName($"{definitionPackage}.{propertyName}")); usings = usings.Add(usingSyntax); } } } if (node.NamedBindings != null) { switch (node.NamedBindings.Kind) { case NodeKind.NamespaceImport: UsingDirectiveSyntax usingSyntax = node.NamedBindings.ToCsNode <UsingDirectiveSyntax>(); if (usingSyntax != null) { usings = usings.Add(usingSyntax); } break; case NodeKind.NamedImports: usings = usings.AddRange(node.NamedBindings.ToCsNode <IEnumerable <UsingDirectiveSyntax> >()); break; default: break; } } return(usings); }
/// <summary> /// Gets all type names of the document. /// </summary> /// <returns></returns> public static List <string> GetTypeNames(Syntax.Document doc) { List <string> ret = new List <string>(); List <Node> types = doc.TypeNodes; foreach (Node type in types) { string name = TypeHelper.GetTypeName(type); if (!string.IsNullOrEmpty(name)) { ret.Add(name); } } return(ret); }