You are here

function _less_pre_render in Less CSS Preprocessor 7.4

Same name and namespace in other branches
  1. 8 less.module \_less_pre_render()
  2. 7.2 less.module \_less_pre_render()
  3. 7.3 less.module \_less_pre_render()

Pre-render function for 'style' elements.

Key place where .less files are detected and processed.

Parameters

array $styles: All 'style' elements that are to display on the page.

Return value

array Modified style elements pointing to compiled LESS output.

2 calls to _less_pre_render()
less_wysiwyg_editor_settings_alter in includes/less.wysiwyg.inc
Implements hook_wysiwyg_editor_settings_alter().
_less_watch in includes/less.watch.inc
Page callback for 'ajax/less/watch'.
1 string reference to '_less_pre_render'
less_element_info_alter in ./less.module
Implements hook_element_info_alter().

File

./less.module, line 160
Handles compiling of .less files.

Code

function _less_pre_render($styles) {
  $less_devel = (bool) variable_get(LESS_DEVEL, FALSE);
  if ($less_devel) {
    if (variable_get(LESS_WATCH, FALSE)) {
      drupal_add_js(drupal_get_path('module', 'less') . '/scripts/less.watch.js');
    }

    // Warn users once every hour that less is checking for file modifications.
    if (user_access(LESS_PERMISSION) && flood_is_allowed('less_devel_warning', 1)) {
      flood_register_event('less_devel_warning');
      $message_vars = array(
        '@url' => url('admin/config/development/less'),
      );
      drupal_set_message(t('LESS files are being checked for modifications on every request. Remember to <a href="@url">turn off</a> this feature on production websites.', $message_vars), 'status');
    }
  }
  $less_items = array_intersect_key($styles['#items'], array_flip(_less_children($styles['#items'])));
  if (!empty($less_items)) {
    require_once dirname(__FILE__) . '/includes/less.process.inc';

    // Attach settings to each item.
    array_walk($less_items, '_less_attach_settings');

    // Determine output path for each item.
    array_walk($less_items, '_less_output_path');

    // Check for rebuild each page.
    if ($less_devel) {
      array_walk($less_items, '_less_check_build');
    }

    // Compile '.less' files.
    array_walk($less_items, '_less_process_file');

    // Store cache information.
    if ($less_devel) {
      array_walk($less_items, '_less_store_cache_info');
    }
    $styles['#items'] = array_replace($styles['#items'], $less_items);
  }
  return $styles;
}