48 lines
1.7 KiB
C#
48 lines
1.7 KiB
C#
using System.Text.RegularExpressions;
|
|
using Microsoft.Maui.Controls;
|
|
|
|
namespace NotesDataAnalyst.NoteContent
|
|
{
|
|
public static class NoteLinkManager
|
|
{
|
|
private static readonly Regex LinkPattern = new(@"<a href=""note:(.*?)"">(.*?)</a>", RegexOptions.Compiled);
|
|
|
|
// Метод для вставки HTML-ссылки на заметку
|
|
public static string InsertLink(string currentText, Note selectedNote)
|
|
{
|
|
string linkText = $"<a href=\"note:{selectedNote.Id}\">{selectedNote.Title}</a>";
|
|
return currentText + " " + linkText;
|
|
}
|
|
|
|
// Метод для извлечения ссылок в HTML
|
|
public static List<(string Id, string Title)> ParseLinks(string html)
|
|
{
|
|
var links = new List<(string Id, string Title)>();
|
|
var matches = LinkPattern.Matches(html);
|
|
|
|
foreach (Match match in matches)
|
|
{
|
|
string id = match.Groups[1].Value;
|
|
string title = match.Groups[2].Value;
|
|
links.Add((id, title));
|
|
}
|
|
|
|
return links;
|
|
}
|
|
|
|
// Реализуем метод NavigateToNoteByIdAsync для перехода к заметке по Id
|
|
public static async Task NavigateToNoteByIdAsync(string noteId, INavigation navigation)
|
|
{
|
|
var note = App.Database.GetAllNotes().FirstOrDefault(n => n.Id == noteId);
|
|
if (note != null)
|
|
{
|
|
await navigation.PushAsync(new NoteDetailPage(note));
|
|
}
|
|
else
|
|
{
|
|
await Application.Current.MainPage.DisplayAlert("Ошибка", "Заметка не найдена", "OK");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|