internal List <WikiFileInfo> _WikiFileCreateFilesList(string dir, WikiFileType type) { List <WikiFileInfo> flst = new List <WikiFileInfo>(); foreach (string f in Directory.GetFiles(dir)) { FileInfo fi = new FileInfo(f); WikiFileInfo wl = new WikiFileInfo(); wl.TimeWrite = fi.LastWriteTime; wl.TimeAccess = fi.LastAccessTime; wl.TimeAdd = DateTime.Now; wl.FilePath = f; wl.FileLock = DateTime.MinValue; wl.FileType = type; if (wl.FileType == WikiFileType.FileReadMd) { wl.FileName = Path.GetFileNameWithoutExtension(f); wl.FileExt = DokuUtil.WikiFileExtToString(f); } else { wl.FileName = Path.GetFileName(f); wl.FileExt = DokuUtil.WikiFileExtToString(f); } flst.Add(wl); } return(flst); }
/// <summary> /// Merge data WikiFileInfo to WikiData /// </summary> /// <param name="wfi">WikiFileInfo</param> internal void MergeWFI(WikiFileInfo wfi, WikiFile.WikiFileParse wfp = null) { if (wfi == null) { return; } this.FileType = wfi.FileType; this.FileExt = wfi.FileExt; this.FileName = wfi.FileName; this.FilePath = wfi.FilePath; this.NameSpace = wfi.NameSpace; this.IsFileNew = false; this.NsParsed = ((wfp == null) ? this.NsParsed : wfp); }
/// <summary> /// internal find Namespace folder, iteration recursive /// </summary> /// <param name="wfo">ref <see cref="WikiEngine.WikiFolderInfo"/>WikiEngine.WikiFolderInfo, out data</param> /// <param name="wfi"><see cref="WikiEngine.WikiFolderInfo"/>WikiEngine.WikiFolderInfo, input data</param> /// <param name="key">Start key to search from Dictionary, its directory name</param> /// <returns>Bolean</returns> internal bool __WikiFilesFindNamespaceFiles(ref WikiFolderInfo wfo, WikiFolderInfo wfi, string key) { bool isUpdate = false; if (wfi == null) { return(isUpdate); } if (wfi.Files.Count > 0) { bool isStrongSearch = wfo.SearchStrong; string search = wfo.SearchPatern; WikiFolderInfo nwfo = new WikiFolderInfo(); nwfo.NameSpace = wfi.NameSpace; wfi.Files.ForEach(o => { if ( ((isStrongSearch) && (o.FileName.Equals(search))) || ((!isStrongSearch) && (o.FileName.Contains(search))) ) { WikiFileInfo nwfi = (WikiFileInfo)o.Clone(); nwfi.NameSpace = nwfo.NameSpace; nwfo.Files.Add(nwfi); isUpdate = true; } }); if (isUpdate) { wfo.Dirs.Add(key, nwfo); if (isStrongSearch) { return(isUpdate); } } } if (wfi.Dirs.Count > 0) { foreach (KeyValuePair <string, WikiFolderInfo> item in wfi.Dirs) { bool ret = __WikiFilesFindNamespaceFiles(ref wfo, ((WikiFolderInfo)item.Value), ((string)item.Key)); isUpdate = ((isUpdate) ? isUpdate : ret); } } return(isUpdate); }
/// <summary> /// part from _WikiFileGetFileInfo(WikiFileParse) internal method /// </summary> /// <param name="wfp">internal class <see cref="WikiEngine.WikiFile.WikiFileParse"/>WikiEngine.WikiFile.WikiFileParse</param> /// <returns><see cref="WikiEngine.WikiFileInfo"/>WikiEngine.WikiFileInfo</returns> internal WikiFileInfo __WikiFileGetFileInfoSelect(WikiFileParse wfp) { WikiFileInfo wfo = null; WikiFolderInfo wfi = null; try { if (wfp.FolderInfo != null) { wfi = wfp.FolderInfo; } else { if ((wfi = this.__WikiFilesFindFiles(wfp)) == null) { throw new WikiEngineInternalSearchEmptyException( string.Format( Properties.ResourceWikiEngine.mdErrorSearchEmpty, wfp.NameSpacePatern, wfp.SearchPatern, wfp.FolderType ) ); } } if (wfi.Dirs.Count != 1) { string exceptMessage = string.Format( "Directory count: {0} '{1}{2}'", wfi.Dirs.Count, wfp.NameSpacePatern, wfp.SearchPatern ); if (wfi.Dirs.Count == 0) { throw new WikiEngineInternalSearchEmptyException(exceptMessage); } throw new WikiEngineInternalSearchManyResultException(exceptMessage); } if ((wfo = wfi.Dirs .ElementAtOrDefault <KeyValuePair <string, WikiFolderInfo> >(0) .Value .Files .FirstOrDefault <WikiFileInfo>()) == null) { throw new WikiEngineInternalSearchEmptyException( string.Format( Properties.ResourceWikiEngine.mdErrorSearchEmpty, wfp.NameSpacePatern, wfp.SearchPatern, wfp.FolderType ) ); } return(wfo); } catch (Exception e) { throw e; } }