using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LunarSF.SHomeWorkshop.LunarMarkdownEditor { /// <summary> /// 用于编制 CHM 目录文件中各条目的类。 /// </summary> public class ChmContentEntry { /// <summary> /// 取 FileSystemInfo.Name 的 URL 转义形式。 /// </summary> public string UrlName { get { return CustomMarkdownSupport.UrlEncode(FileSystemInfo.Name); } } /// <summary> /// 取 FileSystemInfo.FullName 的 URL 转义形式。 /// </summary> public string UrlFullName { get { return CustomMarkdownSupport.UrlEncode(FileSystemInfo.FullName); } } /// <summary> /// 此条目指向的文件系统条目(文件或文件夹)的信息。 /// </summary> public FileSystemInfo FileSystemInfo { get; set; } /// <summary> /// 此条目指向的是个文件。 /// </summary> public bool IsFile { get; set; } /// <summary> /// 此条目指向的是个目录。 /// </summary> public bool IsDirectory { get; set; } /// <summary> /// 文件或目录的短名称。可能包括开头的数字序号或尾部的文件后缀名等信息。 /// </summary> public string ShortName { get; set; } /// <summary> /// CHM 条目使用的标题文本,与目录短名并不一定一致。 /// 很可能是从目录短名格式化而来。 /// </summary> public string Title { get; set; } /// <summary> /// 这是指在 CHM 中挂接到某个目录的 Html 文件。在 LME 中被称为“目录元文件”, /// 元文件总是在对应目录下,且文件名总是“_目录名.html”。 /// 磁盘中结构会是:../../某目录/_某目录.html。 /// </summary> public string DirectoryMetaFile { get; set; } } /// <summary> /// 用于 CHM 目录文件中同级目录的各条目的排序。 /// </summary> public class ChmContentEntryCompare : IComparer<ChmContentEntry> { /// <summary> /// 按文件短名来排序。 /// </summary> public int Compare(ChmContentEntry x, ChmContentEntry y) { return x.ShortName.CompareTo(y.ShortName); } } }