buildDocsManifest function

Map<String, Object?> buildDocsManifest(
  1. List<Library> libraries, {
  2. String packageName = 'lualike',
  3. String? packageVersion,
})

Builds a stable JSON-serializable manifest for editor tooling.

The manifest intentionally mirrors the documentation data exposed by Library.getDocs so IDEs, language servers, and generators can discover the same library surface that the shared HTML UI displays.

Implementation

Map<String, Object?> buildDocsManifest(
  List<Library> libraries, {
  String packageName = 'lualike',
  String? packageVersion,
}) {
  final documentedLibraries = <Map<String, Object?>>[];
  for (final lib in libraries) {
    final docs = lib.getDocs();
    if (docs.isEmpty) continue;
    final libraryName = _libraryDocName(lib, docs);
    documentedLibraries.add(<String, Object?>{
      'name': libraryName,
      'description': lib.description,
      'functions': [
        for (final entry in docs.entries)
          _functionManifestEntry(
            name: entry.key,
            libraryName: libraryName,
            doc: entry.value,
          ),
      ],
    });
  }

  final manifest = <String, Object?>{
    'schemaVersion': 1,
    'generator': 'lualike.docs',
    'package': packageName,
  };
  if (packageVersion != null) {
    manifest['packageVersion'] = packageVersion;
  }
  manifest['libraries'] = documentedLibraries;
  return manifest;
}