예제 #1
0
        private string GetFilesystemPath(INote note)
        {
            var filename = ANFilenameHelper.ConvertStringForFilename(note.Title);

            if (string.IsNullOrWhiteSpace(filename))
            {
                filename = ANFilenameHelper.ConvertStringForFilename(note.UniqueName);
            }

            var ext = ".txt";

            if (note.HasTagCaseInsensitive(AppSettings.TAG_MARKDOWN))
            {
                ext = ".md";
            }

            if (note.Path.IsRoot())
            {
                return(Path.Combine(_path, filename + ext));
            }

            var comp = new[] { _path }
            .Concat(note.Path.Enumerate().Select(ANFilenameHelper.ConvertStringForFilename))
            .Concat(new[] { filename + ext });

            return(Path.Combine(comp.ToArray()));
        }
예제 #2
0
        private static List <AugmentedNote> GetNotes(NoteRepository repo)
        {
            var result = new List <AugmentedNote>();

            var existing = new HashSet <string>();

            foreach (var note in repo.Notes.OrderBy(p => p.CreationDate))
            {
                var fn = ANFilenameHelper.ConvertStringForFilename(note.Title);
                if (string.IsNullOrWhiteSpace(fn))
                {
                    fn = ANFilenameHelper.StripStringForFilename(note.UniqueName);
                }

                var ext = ".txt";

                if (note.HasTagCaseInsensitive(AppSettings.TAG_MARKDOWN))
                {
                    ext = ".md";
                }

                var path = Path.Combine(note.Path.Enumerate().Select(c => ANFilenameHelper.StripStringForFilename(c)).ToArray());

                var oldfn = fn;

                int    idx   = 0;
                string rpath = "";
                for (;;)
                {
                    fn = (idx == 0) ? oldfn : $"{oldfn}_{idx:000}";

                    rpath = string.IsNullOrWhiteSpace(path) ? (fn + ext) : Path.Combine(path, fn + ext);

                    if (existing.Add(rpath))
                    {
                        break;
                    }

                    idx++;
                }

                string txt = note.Text;
                if (fn != note.Title && !string.IsNullOrWhiteSpace(note.Title))
                {
                    txt = note.Title + "\n\n" + note.Text;
                }

                result.Add(new AugmentedNote()
                {
                    Note = note, RelativePath = rpath, Content = txt
                });
            }

            return(result);
        }