예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }