function _less_process_file in Less CSS Preprocessor 7.4
Same name and namespace in other branches
- 8 includes/less.process.inc \_less_process_file()
- 7.3 less.process.inc \_less_process_file()
Process a .less file and save the compiled styles.
Parameters
array[] $item:
string $key:
See also
1 string reference to '_less_process_file'
- _less_pre_render in ./
less.module - Pre-render function for 'style' elements.
File
- includes/
less.process.inc, line 117 - Contains functions related to compiling .less files.
Code
function _less_process_file(&$item, $key) {
$less_settings = $item['less'];
// $output_file doesn't exist or is flagged for build.
if (!is_file($item['less']['output_file']) || !empty($item['less']['build_required'])) {
$output_data = NULL;
try {
$engine = less_get_engine($less_settings['input_file']);
$engine
->setImportDirectories($less_settings['paths']);
if ($less_settings[LESS_DEVEL]) {
$engine
->setSourceMaps($less_settings[LESS_SOURCE_MAPS], DRUPAL_ROOT, base_path());
}
$engine
->modifyVariables($less_settings['variables']);
$output_data = $engine
->compile();
if ($less_settings[LESS_DEVEL]) {
_less_cache_dependencies($less_settings['input_file'], $engine
->getDependencies());
}
} catch (Exception $e) {
$message_vars = array(
'@message' => $e
->getMessage(),
'%input_file' => $item['less']['input_file'],
);
watchdog('LESS', 'LESS error: @message, %input_file', $message_vars, WATCHDOG_ERROR);
if (user_access(LESS_PERMISSION)) {
drupal_set_message(t('LESS error: @message, %input_file', $message_vars), 'error');
}
}
if (isset($output_data)) {
// Fix paths for images as .css is in different location.
$output_data = _less_rewrite_paths($item['less']['input_file'], $output_data);
// Ensure the destination directory exists.
if (_less_ensure_directory(dirname($item['less']['output_file']))) {
file_unmanaged_save_data($output_data, $item['less']['output_file'], FILE_EXISTS_REPLACE);
}
}
if (is_file($item['less']['output_file']) && $item['less'][LESS_AUTOPREFIXER]) {
if (($lessautoprefixer_library = libraries_load('lessautoprefixer')) && $lessautoprefixer_library['installed']) {
try {
LessAutoprefixer::create(drupal_realpath($item['less']['output_file']))
->compile();
} catch (Exception $e) {
$message_vars = array(
'@message' => $e
->getMessage(),
'%input_file' => $item['less']['output_file'],
);
watchdog('LESS', 'Autoprefixer error: @message, %input_file', $message_vars, WATCHDOG_ERROR);
if (user_access(LESS_PERMISSION)) {
drupal_set_message(t('Autoprefixer error: @message, %input_file', $message_vars), 'error');
}
}
}
}
}
if (is_file($item['less']['output_file'])) {
// Set render path of the stylesheet to the compiled output.
$item['data'] = $item['less']['output_file'];
}
}