You are here

less.module in Less CSS Preprocessor 6

File

less.module
View source
<?php

/**
 * Builds the less cache
 */
function _less_build(&$vars, $hook) {
  module_load_include('php', 'less', 'lessc.inc');
  $css = $vars['css'];
  $css_path = file_create_path('less');
  file_check_directory($css_path, FILE_CREATE_DIRECTORY);
  $base_path = $_SERVER['DOCUMENT_ROOT'] . base_path();
  $less = new lessc();
  foreach ($css as $media => $types) {
    foreach ($types as $type => $files) {
      $files_keys = array_keys($files);
      foreach ($files_keys as $key => $input_file) {
        if (substr($input_file, -5) == '.less') {
          $output_file = $css_path . '/' . 'less_' . md5_file($base_path . $input_file) . '.css';
          if (!file_exists($base_path . $output_file)) {
            $contents = drupal_load_stylesheet($input_file, false);
            $base = base_path() . dirname($input_file) . '/';
            _drupal_build_css_path(NULL, $base);

            // Prefix all paths within this CSS file, ignoring external and absolute paths.
            $data = preg_replace_callback('/url\\([\'"]?(?![a-z]+:|\\/+)([^\'")]+)[\'"]?\\)/i', '_drupal_build_css_path', $contents);
            file_save_data($less
              ->parse($data), $output_file, FILE_EXISTS_REPLACE);
          }
          if (file_exists($base_path . $output_file)) {
            array_splice($files_keys, $key, 1, $output_file);
          }
        }
      }
      if (!empty($files)) {
        $css[$media][$type] = array_combine($files_keys, $files);
      }
    }
  }
  $vars['messages'] .= theme('status_messages');
  $vars['styles'] = drupal_get_css($css);
}

/**
 * Implements MODULE_preprocess_page().
 */
function less_preprocess_page(&$vars, $hook) {
  _less_build($vars, $hook);
}

/**
 * Implements MODULE_preprocess_maintenance_page().
 */
function less_preprocess_maintenance_page(&$vars, $hook) {
  _less_build($vars, $hook);
}

/**
 * Implements HOOK_enable().
 */
function less_enable() {
  drupal_rebuild_theme_registry();
}

Functions

Namesort descending Description
less_enable Implements HOOK_enable().
less_preprocess_maintenance_page Implements MODULE_preprocess_maintenance_page().
less_preprocess_page Implements MODULE_preprocess_page().
_less_build Builds the less cache