From e5d291713a3d69030947864a57ed973e0a20684c Mon Sep 17 00:00:00 2001 From: melekhin Date: Wed, 2 Sep 2026 13:06:47 +0700 Subject: [PATCH] ReplaceToTable signatures --- QWERTYkez.WordProcessor/IWordWriter.cs | 3 ++- QWERTYkez.WordProcessor/WordWriter.cs | 28 +++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/QWERTYkez.WordProcessor/IWordWriter.cs b/QWERTYkez.WordProcessor/IWordWriter.cs index 9f9079d..b664166 100644 --- a/QWERTYkez.WordProcessor/IWordWriter.cs +++ b/QWERTYkez.WordProcessor/IWordWriter.cs @@ -20,7 +20,8 @@ public interface IWordWriter : IWordReader void ReplaceString(IEnumerable> replacements); void ReplaceString(string oldValue, IEnumerable newValues); void ReplaceString(string oldValue, params string[] newValues); - void ReplaceToTable(string oldValue, Action buildTable, FontProps? baseFont = null); + void ReplaceToTable(string oldValue, Action buildTable); + void ReplaceToTable(string oldValue, FontProps baseFont, Action buildTable); void ReplaceToText(string oldValue, Action buildText); void Save(); void SaveTo(string path); diff --git a/QWERTYkez.WordProcessor/WordWriter.cs b/QWERTYkez.WordProcessor/WordWriter.cs index 42a21e8..552fa84 100644 --- a/QWERTYkez.WordProcessor/WordWriter.cs +++ b/QWERTYkez.WordProcessor/WordWriter.cs @@ -382,7 +382,7 @@ internal sealed class WordWriter : WordReader, IWordWriter /// /// Текст для поиска в параграфах /// Действие для настройки таблицы через TableBuilder - public void ReplaceToTable(string oldValue, Action buildTable, FontProps? baseFont = null) + public void ReplaceToTable(string oldValue, FontProps baseFont, Action buildTable) { ThrowIfDisposed(); @@ -403,6 +403,32 @@ internal sealed class WordWriter : WordReader, IWordWriter } } + /// + /// Заменяет параграф, содержащий указанный текст, на таблицу, созданную с помощью TableBuilder + /// + /// Текст для поиска в параграфах + /// Действие для настройки таблицы через TableBuilder + public void ReplaceToTable(string oldValue, Action buildTable) + { + ThrowIfDisposed(); + + if (string.IsNullOrEmpty(oldValue)) + throw new ArgumentException("Old value cannot be null or empty", nameof(oldValue)); + + if (buildTable is null) return; + +#if DEBUG + Debug.WriteLine($"[DEBUG] [WordProcessor.ReplaceToTable] Looking for '{oldValue}' to replace with custom table"); +#endif + + lock (_syncLock) + { + // Используем метод расширения для Body с TableBuilder + ReplaceToTableExt.ReplaceParagraphsContainingTextToTable(_body, oldValue, buildTable); + _isModified = true; + } + } + #endregion #region Replace to text