function smarty_block_less($params, $content, Smarty_Internal_Template $template, $open) { /** @var CM_Frontend_Render $render */ $render = $template->smarty->getTemplateVars('render'); $assetCss = new CM_Asset_Css($render); $assetCss->addVariables(); $assetCss->add($content); return $assetCss->get(); }
function smarty_function_lessVariable(array $params, Smarty_Internal_Template $template) { /** @var CM_Frontend_Render $render */ $render = $template->smarty->getTemplateVars('render'); $variableName = (string) $params['name']; $assetCss = new CM_Asset_Css($render); $assetCss->addVariables(); $assetCss->add('foo:@' . $variableName); $css = $assetCss->get(true); if (!preg_match('/^foo:(.+);$/', $css, $matches)) { throw new CM_Exception_Invalid('Cannot detect variable `' . $variableName . '` from CSS `' . $css . '`.'); } return $matches[1]; }
/** * @param $variableName * @return string * @throws CM_Exception_Invalid */ public function getLessVariable($variableName) { $variableName = (string) $variableName; $cache = new CM_Cache_Local(); return $cache->get($cache->key(__METHOD__, $variableName), function () use($variableName) { $assetCss = new CM_Asset_Css($this); $assetCss->addVariables(); $assetCss->add('foo:@' . $variableName); $css = $assetCss->get(true); if (!preg_match('/^foo:(.+);$/', $css, $matches)) { throw new CM_Exception_Invalid('Cannot detect variable from CSS.', null, ['variableName' => $variableName, 'css' => $css]); } return (string) $matches[1]; }); }