• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/block/designer.php
  • Класс: BitrixLandingBlockDesigner
  • Вызов: Designer::parseManifest
static function parseManifest(string $content): array
{
	static $references = [];
	$manifest = [
		'nodes' => [],
		'style' => [],
	];

	if (!$references)
	{
		$references = self::getTypeClassReferences();
	}

	if (preg_match_all('/[s"]+((' . implode('|', array_keys($references)) . ')[-d]*)[s"]+/is', $content, $matches))
	{
		foreach ($matches[2] as $i => $selector)
		{
			if (isset($references[$selector]))
			{
				foreach ($manifest as $code => &$items)
				{
					if (isset($references[$selector][$code]))
					{
						$items['.'.$matches[1][$i]] = $references[$selector][$code];
					}
				}
				unset($items);
				if (isset($references[$selector]['assets']))
				{
					$manifest['assets'] = $references[$selector]['assets'];
				}
			}
		}
	}

	return $manifest;
}