• Модуль: location
  • Путь к файлу: ~/bitrix/modules/location/lib/entity/address/converter/stringtemplateconverter.php
  • Класс: BitrixLocationEntityAddressConverterStringTemplateConverter
  • Вызов: StringTemplateConverter::parseBlocks
private function parseBlocks(array $context): array
{
	/* Variable for debug only
	errorDisplayed = false;
	*/

	$blocks = [];

	$templateLength = strlen($context['template']);
	while ($context['position'] < $templateLength)
	{
		$blockStartPosition = $context['position'];
		$context = $this->parseGroup($context);
		if ($context['hasError'])
		{
			// Debug info
			/*if (!$errorDisplayed)
			{
				echo str_replace(PHP_EOL, '
', htmlspecialcharsbx($this->getErrorsText($context))); $errorDisplayed = true; }*/ $errorInfo = $context['error']['info']; if (!empty($errorInfo) && is_array($errorInfo) && isset($errorInfo['groupStartPosition']) && $errorInfo['groupStartPosition'] > $blockStartPosition) { $blockLength = $errorInfo['groupStartPosition'] - $blockStartPosition + 1; } else { $blockLength = 1; } $this->appendTextBlock( $blocks, $context['error']['position'], substr($context['template'], $blockStartPosition, $blockLength) ); $context = $this->clearContextInfoAndError($context); $context['position'] = $blockStartPosition + $blockLength; } else { $groupStartPosition = $context['info']['position']; if ($groupStartPosition > $blockStartPosition) { $this->appendTextBlock( $blocks, $blockStartPosition, substr( $context['template'], $blockStartPosition, $groupStartPosition - $blockStartPosition ) ); } if ($context['info']['value'] !== '') { $this->appendGroupBlock( $blocks, $groupStartPosition, $context['info']['value'] ); } $context = $this->clearContextInfo($context); } } if (!$context['hasError']) { $context['info'] = ['blocks' => $blocks]; } return $context; }