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);
        }
示例#2
0
 /// <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;
            }
        }