@@ -592,6 +592,24 @@ public Module LoadModule(string path)
592592 return LoadModule ( Path . GetFileNameWithoutExtension ( path ) , File . ReadAllBytes ( path ) ) ;
593593 }
594594
595+ /// <summary>
596+ /// Loads a <see cref="Module"/> given stream as WebAssembly.
597+ /// </summary>
598+ /// <param name="moduleName">Name of the module</param>
599+ /// <param name="stream">Stream with module data</param>
600+ /// <returns>Returns a new <see cref="Module"/>.</returns>
601+ public Module LoadModule ( string moduleName , Stream moduleStream )
602+ {
603+ using ( StreamReader reader = new StreamReader ( moduleStream ) )
604+ {
605+ using ( MemoryStream ms = new MemoryStream ( ) )
606+ {
607+ reader . BaseStream . CopyTo ( ms ) ;
608+ return LoadModule ( moduleName , ms . ToArray ( ) ) ;
609+ }
610+ }
611+ }
612+
595613 /// <summary>
596614 /// Loads a <see cref="Module"/> based on a WebAssembly text format representation.
597615 /// </summary>
@@ -645,53 +663,17 @@ public Module LoadModuleText(string path)
645663 return LoadModuleText ( Path . GetFileNameWithoutExtension ( path ) , File . ReadAllText ( path ) ) ;
646664 }
647665
648- public Module LoadEmbeddedModule ( string resourceName )
649- {
650- var assembly = Assembly . GetCallingAssembly ( ) ;
651- var allResources = new List < string > (
652- assembly . GetManifestResourceNames ( ) . Where ( str => str . EndsWith ( resourceName ) )
653- ) ;
654- if ( allResources . Count == 0 )
655- {
656- throw new ArgumentException ( $ "Could not find resource: { resourceName } !!") ;
657- }
658- if ( allResources . Count > 1 )
659- {
660- throw new ArgumentException ( @$ "Found more than one resource with name { resourceName } : { allResources } !! Consider specify full path to resource ...") ;
661- }
662- var assemblyResourceName = allResources . First ( ) ;
663- using ( Stream stream = assembly . GetManifestResourceStream ( assemblyResourceName ) )
664- using ( StreamReader reader = new StreamReader ( stream ) )
665- {
666- using ( MemoryStream ms = new MemoryStream ( ) )
667- {
668- reader . BaseStream . CopyTo ( ms ) ;
669- byte [ ] bytes = ms . ToArray ( ) ;
670- return LoadModule ( Path . GetFileNameWithoutExtension ( assemblyResourceName ) , bytes ) ;
671- }
672- }
673- }
674-
675- public Module LoadEmbeddedModuleText ( string resourceName )
666+ /// <summary>
667+ /// Loads a <see cref="Module"/> given stream as WebAssembly text format stream.
668+ /// </summary>
669+ /// <param name="moduleName">Name of the module</param>
670+ /// <param name="stream">WebAssembly text format stream with module data</param>
671+ /// <returns>Returns a new <see cref="Module"/>.</returns>
672+ public Module LoadModuleText ( string moduleName , Stream moduleStream )
676673 {
677- var assembly = Assembly . GetCallingAssembly ( ) ;
678- var allResources = new List < string > (
679- assembly . GetManifestResourceNames ( ) . Where ( str => str . EndsWith ( resourceName ) )
680- ) ;
681- if ( allResources . Count == 0 )
682- {
683- throw new ArgumentException ( $ "Could not find resource: { resourceName } !!") ;
684- }
685- if ( allResources . Count > 1 )
686- {
687- throw new ArgumentException ( @$ "Found more than one resource with name { resourceName } : { allResources } !! Consider specify full path to resource ...") ;
688- }
689- var assemblyResourceName = allResources . First ( ) ;
690- using ( Stream stream = assembly . GetManifestResourceStream ( assemblyResourceName ) )
691- using ( StreamReader reader = new StreamReader ( stream ) )
674+ using ( StreamReader reader = new StreamReader ( moduleStream ) )
692675 {
693- string text = reader . ReadToEnd ( ) ;
694- return LoadModuleText ( Path . GetFileNameWithoutExtension ( assemblyResourceName ) , text ) ;
676+ return LoadModuleText ( moduleName , reader . ReadToEnd ( ) ) ;
695677 }
696678 }
697679
0 commit comments