From 7a3f50af603de5ff90634340ffeef47c922cfd08 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Tue, 8 Aug 2017 09:59:00 +0200 Subject: [PATCH] Inline small svg files A simple helper function for the SCSS compiler to include svg files. Signed-off-by: Roeland Jago Douma --- lib/private/Template/SCSSCacher.php | 36 +++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php index fe5a095c7739b..1b26d6e209bde 100644 --- a/lib/private/Template/SCSSCacher.php +++ b/lib/private/Template/SCSSCacher.php @@ -205,6 +205,42 @@ private function cache($path, $fileNameCSS, $fileNameSCSS, ISimpleFolder $folder $depFile = $folder->newFile($depFileName); } + // Add img importer + $scss->registerFunction('url', function($args) use ($scss) { + $origurl = $args[0][2][0]; + + $urls = explode('?', $origurl); + $url = $urls[0]; + + $files = $scss->getParsedFiles(); + + $ext = substr($url, strrpos($url, '.')+1); + + if ($ext === 'svg') { + foreach ($files as $file => $timestamp) { + $dir = dirname($file); + $path = $dir . '/' . $url; + + if (!file_exists($path)) { + continue; + } + + if (filesize($path) > 10240) { + break; + } + + $scss->addParsedFile($path); + + $content = file_get_contents($path); + $content = base64_encode($content); + + return 'url(\'data:image/svg+xml;base64,'. $content . '\')'; + } + } + + return 'url(\'' . $origurl . '\')'; + }); + // Compile try { $compiledScss = $scss->compile(