mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
MDL-56488 boost: validate scss settings for parsable scss
* Parses the scss and fails validation if a parse error is found * Does not detect the situation when variables are not present - this would involve us parsing the entire tree and would be slow. It could also change over time, depending on whats defined in the scss from themes. * Introduces a new admin_setting_scsscode to do this
This commit is contained in:
parent
c4cf1c60f5
commit
0e34e46fd0
3 changed files with 41 additions and 2 deletions
|
@ -10180,3 +10180,41 @@ class admin_setting_searchsetupinfo extends admin_setting {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to validate the contents of SCSS code and ensuring they are parsable.
|
||||
*
|
||||
* It does not attempt to detect undefined SCSS variables because it is designed
|
||||
* to be used without knowledge of other config/scss included.
|
||||
*
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @copyright 2016 Dan Poltawski <dan@moodle.com>
|
||||
*/
|
||||
class admin_setting_scsscode extends admin_setting_configtextarea {
|
||||
|
||||
/**
|
||||
* Validate the contents of the SCSS to ensure its parsable. Does not
|
||||
* attempt to detect undefined scss variables.
|
||||
*
|
||||
* @param string $data The scss code from text field.
|
||||
* @return mixed bool true for success or string:error on failure.
|
||||
*/
|
||||
public function validate($data) {
|
||||
if (empty($data)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$scss = new core_scss();
|
||||
try {
|
||||
$scss->compile($data);
|
||||
} catch (Leafo\ScssPhp\Exception\ParserException $e) {
|
||||
return get_string('scssinvalid', 'admin', $e->getMessage());
|
||||
} catch (Leafo\ScssPhp\Exception\CompilerException $e) {
|
||||
// Silently ignore this - it could be a scss variable defined from somewhere
|
||||
// else which we are not examining here.
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue