SCSS Compiler
Note
The SCSSCompiler relies on
SCSSPHP module by Leaf Corcoran
and is copyright to him. It should be installed in the Paloose plugin folder. This will happen naturally when a full Paloose installation is done. My
thanks to him for this work.
Warning
The current version as loaded from the
github
site (V1.3) had a small problem: the
OutputStyle.php file was not included in the
Compiler.php file correctly (the actual error was
"could not find \ScssPhp\ScssPhp\OutputStyle"). I resolved
this by moving the
OutputStyle class into the
Compiler.php. The normal install of Paloose will
always have this updated version included. It may be a quirk of my local server and a vanilla installation will work fine on your system —
you have been warned! It has been reported.
The SCSS Compiler provides a mechanism to translate style files written to the SCSS format into CSS files. The actual compiler is the SCSSPHP compiler that is added as a plugin. Paloose will work fine if you don't need
this facility and you can remove SCSSPHP from the plugins folder.
The SCSS compiler must be considered as a transformer from its behaviour: it must not appear first or last in a pipeline line (i.e. not before a
generator or after a serializer). It is declared in the transformers declaration of the sitemap as
<map:transformers default="xslt">
<map:transformer name="scss" src="resource://lib/scss/SCSSCompiler">
<map:parameter name="src" value="context://resources/scss"/>
<map:parameter name="dst" value="context://resources/styles"/>
<map:parameter name="compact" value="no"/>
</map:transformer>
</map:transformers>
where the parameters are
- src — (optional) defines where your SCSS files are stored. This would normally be a folder within the
resources folder at the same level as the CSS folder (defaults to "context://resources/scss" if not given).
- dst — (optional) is the destination file for the CSS generated files. It is also the folder where the
compilers cache folder (scss_cache) is held (defaults to "context://resources/styles" if not
given).
- compact — (optional) defines where the CSS generated is in a compact form (defaults to "no" if not
given). Permitted values are "yes", "true" or "1" and "no", "false" or "0".
The default values given above should be always used unless there is a particular reason. Using the component is simple, place it anywhere within a
sitemap pipeline as a transformer:
<map:match pattern="*.html">
<map:aggregate element="root" label="aggr-content">
<map:part src="context://content/breadcrumbs.xml" element="breadcrumbs" strip-root="true"/>
<map:part src="context://content/menus.xml" element="menus" strip-root="true"/>
<map:part src="cocoon:/{1}.xml" element="content" strip-root="true"/>
</map:aggregate>
<map:transform src="context://resources/transforms/page2xhtml.xsl" label="page-transform">
<map:parameter name="page" value="{1}"/>
<map:parameter name="baseDir" value="context://"/>
</map:transform>
<map:transform type="scss" label="scss-content"
<map:serialize type="xhtml"/>
</map:match>
which would compile any scss file in the src folder to the dst folder. If anything in the
pipeline relies on generated CSS then the pipeline stage should be moved earlier in the pipeline (but not before the generation stage (the aggregate in
the example following). If the scss file has not changed then the compiler uses the already existing css file.
<map:match pattern="*.html">
<map:aggregate element="root" label="aggr-content">
<map:part src="context://content/breadcrumbs.xml" element="breadcrumbs" strip-root="true"/>
<map:part src="context://content/menus.xml" element="menus" strip-root="true"/>
<map:part src="cocoon:/{1}.xml" element="content" strip-root="true"/>
</map:aggregate>
<map:transform type="scss" label="scss-content"
<map:transform src="context://resources/transforms/page2xhtml.xsl" label="page-transform">
<map:parameter name="page" value="{1}"/>
<map:parameter name="baseDir" value="context://"/>
</map:transform>
<map:serialize type="xhtml"/>
</map:match>
Copyright 2006 – 2020 Hugh Field-Richards. All Rights Reserved.