Merge pull request #213 from linquize/linquize-master
[mono.git] / mcs / tools / monodoc / Mono.Documentation / ManifestResourceResolver.cs
index 60c257ed47cba3ba6d42d0ddafe94240412baf74..402d137e06fc0b22354998cd86f18dc4bdd18896 100644 (file)
@@ -5,22 +5,25 @@ using System.Xml;
 
 namespace Mono.Documentation {
        public class ManifestResourceResolver : XmlUrlResolver {
-               private string dir;
+               private string[] dirs;
 
-               public ManifestResourceResolver (string dir)
+               public ManifestResourceResolver (params string[] dirs)
                {
-                       this.dir = dir;
+                       this.dirs = (string[]) dirs.Clone ();
                }
 
                public override Uri ResolveUri (Uri baseUri, string relativeUri)
                {
-                       using (Stream s = Assembly.GetExecutingAssembly ().GetManifestResourceStream (relativeUri)) {
-                               if (s != null)
+                       if (Array.IndexOf (
+                                               Assembly.GetExecutingAssembly ().GetManifestResourceNames (), 
+                                               relativeUri) >= 0)
                                        return new Uri ("x-resource:///" + relativeUri);
+                       foreach (var dir in dirs) {
+                               if (File.Exists (Path.Combine (dir, relativeUri)))
+                                       return base.ResolveUri (new Uri ("file://" + new DirectoryInfo (dir).FullName + "/"), 
+                                                       relativeUri);
                        }
-                       return base.ResolveUri (
-                                       new Uri ("file://" + new DirectoryInfo (dir).FullName + "/"), 
-                                       relativeUri);
+                       return base.ResolveUri (baseUri, relativeUri);
                }
 
                public override object GetEntity (Uri absoluteUri, string role, Type ofObjectToReturn)