public IEnumerable <StructuralError> TryImportConstants(ModuleContext context) { if (alias != null) { return(Enumerable.Empty <StructuralError>()); } IKontrolModule module = context.FindModule(fromModule); if (module == null) { return(new StructuralError( StructuralError.ErrorType.NoSuchModule, $"Module '{fromModule}' not found", Start, End ).Yield()); } foreach (string name in names ?? module.AllConstantNames) { IKontrolConstant constant = module.FindConstant(name); if (constant != null) { context.mappedConstants.Add(name, constant); } } return(Enumerable.Empty <StructuralError>()); }
public static void GenerateDocs(ModuleContext moduleContext, IKontrolModule module, TextWriter output) { output.WriteLine("---"); output.WriteLine($"title: \"{module.Name}\""); output.WriteLine("---"); output.WriteLine(); output.WriteLine(module.Description); if (module.AllTypeNames.Any()) { output.WriteLine(); output.WriteLine("# Types"); output.WriteLine(); foreach (string typeName in module.AllTypeNames.OrderBy(name => name)) { RealizedType type = module.FindType(typeName)?.UnderlyingType(moduleContext); output.WriteLine(); output.WriteLine($"## {typeName}"); output.WriteLine(); output.WriteLine(type.Description); if (type.DeclaredFields.Count > 0) { output.WriteLine(); output.WriteLine("### Fields"); output.WriteLine(); output.WriteLine("Name | Type | Description"); output.WriteLine("--- | --- | ---"); foreach (var kv in type.DeclaredFields.OrderBy(kv => kv.Key)) { output.WriteLine( $"{kv.Key} | {kv.Value.DeclaredType} | {kv.Value.Description?.Replace("\n", " ")}"); } } if (type.DeclaredMethods.Count > 0) { output.WriteLine(); output.WriteLine("### Methods"); foreach (var kv in type.DeclaredMethods.OrderBy(kv => kv.Key)) { output.WriteLine(); output.WriteLine($"#### {kv.Key}"); output.WriteLine(); output.WriteLine("```rust"); output.WriteLine(MethodSignature(type.LocalName, kv.Key, kv.Value)); output.WriteLine("```"); output.WriteLine(); output.WriteLine(kv.Value.Description); } } } } if (module.AllConstantNames.Any()) { output.WriteLine(); output.WriteLine("# Constants"); output.WriteLine(); output.WriteLine("Name | Type | Description"); output.WriteLine("--- | --- | ---"); foreach (string constantName in module.AllConstantNames.OrderBy(name => name)) { IKontrolConstant constant = module.FindConstant(constantName); output.WriteLine($"{constantName} | {constant.Type} | {constant.Description?.Replace("\n", " ")}"); } output.WriteLine(); } if (module.AllFunctionNames.Any()) { output.WriteLine(); output.WriteLine("# Functions"); output.WriteLine(); foreach (string functionName in module.AllFunctionNames.OrderBy(name => name)) { IKontrolFunction function = module.FindFunction(functionName); output.WriteLine(); output.WriteLine($"## {functionName}"); output.WriteLine(); output.WriteLine("```rust"); output.WriteLine(FunctionSignature(function)); output.WriteLine("```"); output.WriteLine(); output.WriteLine(function.Description); } } }