private static string CleanForFS(string str, string uniq) { var fn = FilenameHelper.StripStringForFilename(str, '_'); if (string.IsNullOrWhiteSpace(fn)) { fn = FilenameHelper.StripStringForFilename(uniq); } return(fn); }
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 = FilenameHelper.ConvertStringForFilename(note.Title); if (string.IsNullOrWhiteSpace(fn)) { fn = FilenameHelper.StripStringForFilename(note.UniqueName); } var ext = ".txt"; if (note.HasTagCaseInsensitive(AppSettings.TAG_MARKDOWN)) { ext = ".md"; } var path = Path.Combine(note.Path.Enumerate().Select(c => FilenameHelper.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); }