You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Linq;
 | |
| using System.IO;
 | |
| using System.Text;
 | |
| using System.Xml;
 | |
| using System.Xml.Linq;
 | |
| using System.Collections.Generic;
 | |
| 
 | |
| using Lucene.Net.Index;
 | |
| using Lucene.Net.Documents;
 | |
| 
 | |
| using Monodoc.Ecma;
 | |
| using Monodoc.Storage;
 | |
| using Mono.Utilities;
 | |
| 
 | |
| namespace Monodoc.Providers
 | |
| {
 | |
| 	public class EcmaUncompiledHelpSource : EcmaHelpSource
 | |
| 	{
 | |
| 		readonly DirectoryInfo basedir;
 | |
| 		readonly string basedoc;
 | |
| 
 | |
| 		public readonly string BasePath;
 | |
| 
 | |
| 		public new string Name {
 | |
| 			get;
 | |
| 			private set;
 | |
| 		}
 | |
| 	
 | |
| 		/* base_file: the directory containing the index.xml file, usually in Mono land .../Documentation/en
 | |
| 		 * markName: if true, we encase the node caption with [] to clearly mark it's from an uncompiled source
 | |
| 		 */
 | |
| 		public EcmaUncompiledHelpSource (string base_file, bool markName = true) : base ()
 | |
| 		{
 | |
| 			basedir = new DirectoryInfo (base_file);
 | |
| 			BasePath = basedir.FullName;
 | |
| 		
 | |
| 			basedoc = Path.Combine (basedir.FullName, "index.xml");
 | |
| 		
 | |
| 			Name = ((string)XDocument.Load (basedoc).Root.Element ("Title")) ?? "UnnamedUncompiledSource";
 | |
| 			if (markName)
 | |
| 				Name = '[' + Name + ']';
 | |
| 			Tree.RootNode.Caption = Name;
 | |
| 
 | |
| 			Func<XElement, string> indexGenerator = type => {
 | |
| 				var nsName = (string)type.Parent.Attribute ("Name");
 | |
| 				var typeName = (string)type.Attribute ("Name");
 | |
| 				return Path.ChangeExtension (nsName + '/' + typeName, ".xml");
 | |
| 			};
 | |
| 
 | |
| 			this.Storage = new UncompiledDocStorage (BasePath);
 | |
| 
 | |
| 			EcmaDoc.PopulateTreeFromIndexFile (basedoc, UriPrefix, Tree, null, null, indexGenerator);
 | |
| 		}
 | |
| 
 | |
| 		protected override string UriPrefix {
 | |
| 			get {
 | |
| 				return "uncompiled:";
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public override Stream GetImage (string url)
 | |
| 		{
 | |
| 			var path = Path.Combine (BasePath, "_images", url);
 | |
| 			return File.Exists (path) ? File.OpenRead (path) : (Stream)null;
 | |
| 		}
 | |
| 	}
 | |
| }
 |