ФорматированнаяСтрока (БСП)

Автор: 1С
ОбщийМодуль.СтроковыеФункцииКлиентСервер
БСП

Форматированная строка. Форматирует строку в соответствии с заданным шаблоном.

// Форматирует строку в соответствии с заданным шаблоном.
// Возможные значения тегов в шаблоне:
// - <b> Строка </b> - выделяет строку жирным шрифтом.
// - <a href = "Ссылка"> Строка </a> - добавляет гиперссылку.
// Например, "Минимальная версия программы <b>1.1</b>. <a href = "Обновление">Обновите</a> программу.".
//
// Параметры:
//  СтрокаСТегами - Строка - строка, содержащая теги форматирования.
//
// Возвращаемое значение:
//  ФорматированнаяСтрока - преобразованная строка.
//
Функция ФорматированнаяСтрока(Знач СтрокаСТегами) Экспорт
	
	СтрокиСВыделением = Новый СписокЗначений;
	Пока СтрНайти(СтрокаСТегами, "<b>") <> 0 Цикл
		НачалоВыделения = СтрНайти(СтрокаСТегами, "<b>");
		СтрокаДоОткрывающегоТега = Лев(СтрокаСТегами, НачалоВыделения - 1);
		СтрокиСВыделением.Добавить(СтрокаДоОткрывающегоТега);
		СтрокаПослеОткрывающегоТега = Сред(СтрокаСТегами, НачалоВыделения + 3);
		КонецВыделения = СтрНайти(СтрокаПослеОткрывающегоТега, "</b>");
		ВыделенныйФрагмент = Лев(СтрокаПослеОткрывающегоТега, КонецВыделения - 1);
		СтрокиСВыделением.Добавить(ВыделенныйФрагмент,, Истина);
		СтрокаПослеВыделения = Сред(СтрокаПослеОткрывающегоТега, КонецВыделения + 4);
		СтрокаСТегами = СтрокаПослеВыделения;
	КонецЦикла;
	СтрокиСВыделением.Добавить(СтрокаСТегами);
	
	СтрокиСоСсылками = Новый СписокЗначений;
	Для Каждого ЧастьСтроки Из СтрокиСВыделением Цикл
		
		СтрокаСТегами = ЧастьСтроки.Значение;
		
		Если ЧастьСтроки.Пометка Тогда
			СтрокиСоСсылками.Добавить(СтрокаСТегами,, Истина);
			Продолжить;
		КонецЕсли;
		
		НачалоВыделения = СтрНайти(СтрокаСТегами, "<a href = ");
		Пока НачалоВыделения <> 0 Цикл
			СтрокаДоОткрывающегоТега = Лев(СтрокаСТегами, НачалоВыделения - 1);
			СтрокиСоСсылками.Добавить(СтрокаДоОткрывающегоТега, );
			
			СтрокаПослеОткрывающегоТега = Сред(СтрокаСТегами, НачалоВыделения + 9);
			ЗакрывающийТег = СтрНайти(СтрокаПослеОткрывающегоТега, ">");
			
			Ссылка = СокрЛП(Лев(СтрокаПослеОткрывающегоТега, ЗакрывающийТег - 2));
			Если СтрНачинаетсяС(Ссылка, """") Тогда
				Ссылка = Сред(Ссылка, 2, СтрДлина(Ссылка) - 1);
			КонецЕсли;
			Если СтрЗаканчиваетсяНа(Ссылка, """") Тогда
				Ссылка = Сред(Ссылка, 1, СтрДлина(Ссылка) - 1);
			КонецЕсли;
			
			СтрокаПослеСсылки = Сред(СтрокаПослеОткрывающегоТега, ЗакрывающийТег + 1);
			КонецВыделения = СтрНайти(СтрокаПослеСсылки, "</a>");
			ТекстСсылки = Лев(СтрокаПослеСсылки, КонецВыделения - 1);
			СтрокиСоСсылками.Добавить(ТекстСсылки, Ссылка);
			
			СтрокаПослеВыделения = Сред(СтрокаПослеСсылки, КонецВыделения + 4);
			СтрокаСТегами = СтрокаПослеВыделения;
			
			НачалоВыделения = СтрНайти(СтрокаСТегами, "<a href = ");
		КонецЦикла;
		СтрокиСоСсылками.Добавить(СтрокаСТегами);
		
	КонецЦикла;
	
	МассивСтроки = Новый Массив;
	Для Каждого ЧастьСтроки Из СтрокиСоСсылками Цикл
		
		Если ЧастьСтроки.Пометка Тогда
			МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение, Новый Шрифт(,,Истина)));
		ИначеЕсли Не ПустаяСтрока(ЧастьСтроки.Представление) Тогда
			МассивСтроки.Добавить(Новый ФорматированнаяСтрока(ЧастьСтроки.Значение,,,, ЧастьСтроки.Представление));
		Иначе
			МассивСтроки.Добавить(ЧастьСтроки.Значение);
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Новый ФорматированнаяСтрока(МассивСтроки);
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ФорматированнаяСтрокаИзHTML (БСП)

ФорматированныйЗаголовок (БСП)

Пример раскраски текста форматированной строки

ТекстФорматированногоЗаголовка (БСП)

НавигационнаяСсылкаОбработкиРезервногоКопирования (БСП)

ОбработатьТекстHTMLДляФорматированногоДокумента (БСП)

ОбработатьHTMLДляФорматированногоДокумента (БСП)

Строка в дату по форматной строке

TurboConf - расширение Конфигуратора 1С