initializeLibraryReader function

Future<LibraryReader> initializeLibraryReader(
  1. Map<String, String> contentMap,
  2. String targetLibraryFileName
)

Returns a LibraryReader for library specified by targetLibraryFileName using the file contents described by contentMap.

contentMap contains the Dart file contents to from which to create the library stored as filename / file content pairs.

Implementation

Future<LibraryReader> initializeLibraryReader(
  Map<String, String> contentMap,
  String targetLibraryFileName,
) async {
  if (!contentMap.containsKey(targetLibraryFileName)) {
    throw ArgumentError.value(
      targetLibraryFileName,
      'targetLibraryFileName',
      'Must exist as a key in `contentMap`.',
    );
  }

  String assetIdForFile(String fileName) => '$testPackageName|lib/$fileName';

  final targetLibraryAssetId = assetIdForFile(targetLibraryFileName);

  final assetMap = contentMap
      .map((file, content) => MapEntry(assetIdForFile(file), content));

  final library = await resolveSources(
    assetMap,
    (item) async {
      final assetId = AssetId.parse(targetLibraryAssetId);
      return item.libraryFor(assetId);
    },
    resolverFor: targetLibraryAssetId,
  );

  return LibraryReader(library);
}