/// <summary> /// Корректировка парных тегов Стихов /// </summary> /// <returns>Откорректированную строку типа string </returns> public string correct() { if (_xmlText.IndexOf(_startTag, StringComparison.CurrentCulture) == -1) { return(_xmlText); } // преобработка (удаление стартовых пробелов ДО тегов и удаление завершающих пробелов ПОСЛЕ тегов и символов переноса строк) if (_preProcess) { _xmlText = FB2CleanCode.preProcessing(_xmlText); } /************************************ * Предварительная обработка stanza * ************************************/ // вставка <v /> после </subtitle> внутри <stanza></stanza>: // <stanza><subtitle>Текст</subtitle></stanza> => <stanza><subtitle>Текст</subtitle><v/></stanza> try { _xmlText = Regex.Replace( _xmlText, @"(?<=<stanza>)\s*?(?'subtitle'<subtitle>.+?</subtitle>)\s*?(?=</stanza>)", "${subtitle}<v/>", RegexOptions.IgnoreCase | RegexOptions.Multiline ); } catch (RegexMatchTimeoutException /*ex*/) {} catch (Exception ex) { if (Settings.Settings.ShowDebugMessage) { // Показывать сообщения об ошибках при падении работы алгоритмов MessageBox.Show( string.Format("StanzaCorrector:\r\nВставка <v /> после </subtitle> внутри <stanza></stanza>:.\r\nОшибка:\r\n{0}", ex.Message), _MessageTitle, MessageBoxButtons.OK, MessageBoxIcon.Error ); } } // обработка найденных парных тэгов IWorker worker = new StanzaCorrectorWorker(); TagWorker tagWorker = new TagWorker(ref _xmlText, _startTag, _endTag, ref worker); _xmlText = tagWorker.Work(); // постобработка (разбиение на теги (смежные теги) ) if (_postProcess) { _xmlText = FB2CleanCode.postProcessing(_xmlText); } return(_xmlText); }
/// <summary> /// Корректировка парных тегов Стихов /// </summary> /// <returns>Откорректированную строку типа string </returns> public string correct() { if (_xmlText.IndexOf(_startTag, StringComparison.CurrentCulture) == -1) { return(_xmlText); } // преобработка (удаление стартовых пробелов ДО тегов и удаление завершающих пробелов ПОСЛЕ тегов и символов переноса строк) if (_preProcess) { _xmlText = FB2CleanCode.preProcessing(_xmlText); } /************************************ * Предварительная обработка stanza * ************************************/ // вставка <v /> после </subtitle> внутри <stanza></stanza>: // <stanza><subtitle>Текст</subtitle></stanza> => <stanza><subtitle>Текст</subtitle><v/></stanza> try { _xmlText = Regex.Replace( _xmlText, @"(?<=<stanza>)\s*?(?'subtitle'<subtitle>.+?</subtitle>)\s*?(?=</stanza>)", "${subtitle}<v/>", RegexOptions.IgnoreCase | RegexOptions.Multiline ); } catch (RegexMatchTimeoutException /*ex*/) {} catch (Exception ex) { Debug.DebugMessage( _FilePath, ex, "StanzaCorrector:\r\nВставка <v /> после </subtitle> внутри <stanza></stanza>:." ); } // обработка найденных парных тэгов IWorker worker = new StanzaCorrectorWorker(); TagWorker tagWorker = new TagWorker(_FilePath, ref _xmlText, _startTag, _endTag, ref worker); _xmlText = tagWorker.Work(); // постобработка (разбиение на теги (смежные теги) ) if (_postProcess) { _xmlText = FB2CleanCode.postProcessing(_xmlText); } return(_xmlText); }