Example #1
0
 public function compileFile($fname, $outFname = null)
 {
     if (!is_readable($fname)) {
         throw new Exception('load error: failed to find ' . $fname);
     }
     $pi = pathinfo($fname);
     $oldImport = $this->importDir;
     $this->importDir = (array) $this->importDir;
     $this->importDir[] = realpath($pi['dirname']) . '/';
     $this->allParsedFiles = array();
     $this->addParsedFile($fname);
     $parser = new Less_Parser(array('sourceMap' => $this->sourceMap));
     $parser->SetImportDirs($this->getImportDirs());
     if (count($this->registeredVars)) {
         $parser->ModifyVars($this->registeredVars);
     }
     foreach ($this->libFunctions as $name => $func) {
         $parser->registerFunction($name, $func);
     }
     $parser->parseFile($fname);
     $out = $parser->getCss();
     $parsed = Less_Parser::AllParsedFiles();
     foreach ($parsed as $file) {
         $this->addParsedFile($file);
     }
     $this->importDir = $oldImport;
     if ($outFname !== null) {
         return file_put_contents($outFname, $out);
     }
     return $out;
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function filterLoad(AssetInterface $asset)
 {
     $parser = new \Less_Parser(array('compress' => 'compressed' == $this->formatter, 'relativeUrls' => false));
     $importDirs = array_fill_keys((array) $this->loadPaths, '/');
     $importDirs[dirname($asset->getSourceRoot() . '/' . $asset->getSourcePath())] = '/';
     $webDir = $this->webDir;
     $importDirs[] = function ($path) use($webDir) {
         $file = $webDir . '/' . $path;
         foreach (array('', '.less', '.css') as $extension) {
             if (file_exists($file . $extension)) {
                 return array($file . $extension, null);
             }
         }
         return null;
     };
     $parser->SetImportDirs($importDirs);
     $content = $asset->getContent();
     $parser->parse($content);
     $css = $parser->getCss();
     $this->cache->set(md5($content), \Less_Parser::AllParsedFiles());
     $asset->setContent($css);
 }
/**
 * Compiler des styles inline LESS en CSS
 *
 * @param string $style
 *   contenu du .less
 * @param array $contexte
 *   file : chemin du fichier compile
 *          utilise en cas de message d'erreur, et pour le repertoire de reference des @import
 * @return string
 */
function lesscss_compile($style, $contexte = array())
{
    static $import_dirs = null;
    require_once 'less.php/Less.php';
    if (is_null($import_dirs)) {
        $path = _chemin();
        $import_dirs = array();
        foreach ($path as $p) {
            $import_dirs[$p] = protocole_implicite(url_absolue($p ? $p : "./"));
        }
    }
    $parser = new Less_Parser();
    include_spip('inc/config');
    $parser->setOption('sourceMap', lire_config('lesscss/activer_sourcemaps', false) == "on" ? true : false);
    $parser->setImportDirs($import_dirs);
    $parser->relativeUrls = true;
    try {
        $url_absolue = $contexte['file'] ? protocole_implicite(url_absolue($contexte['file'])) : null;
        $parser->parse($style, $url_absolue);
        $out = $parser->getCss();
        if ($files = Less_Parser::AllParsedFiles() and count($files)) {
            $l = strlen(_DIR_RACINE);
            foreach ($files as $k => $file) {
                if (strncmp($file, _DIR_RACINE, $l) == 0) {
                    $files[$k] = substr($file, $l);
                }
            }
            $out = "/*\n#@" . implode("\n#@", $files) . "\n*" . "/\n" . $out;
        }
        return $out;
    } catch (exception $ex) {
        spip_log('less.php fatal error:' . $ex->getMessage(), 'less' . _LOG_ERREUR);
        erreur_squelette("LESS : Echec compilation" . (isset($contexte['file']) ? " fichier " . $contexte['file'] : "") . "<br />" . $ex->getMessage());
        return '';
    }
}
Example #4
0
//$Less->parse( '@breadcrumb-active-color: @link-hover-color;' );
//$Less->parse( '@breadcrumb-padding-vertical: 2px;' );
//$Less->parse( '@breadcrumb-padding-horizontal: 0;' );
//
//$Less->parse( '@table-cell-padding: 6px;' );
//$Less->parse( '@table-condensed-cell-padding: 5px;' );
// Panel
$Less->parse('@panel-heading-padding: 7px 10px;');
$Less->parse('@panel-body-padding: 5px 10px;');
// Thumbnail
$Less->parse('@thumbnail-padding: 6px;');
$Less->parse('@thumbnail-caption-padding: 9px;');
//$Less->parse( '@thumbnail-border: @gray-dark;' );
//$Less->parse( '@thumbnail-border-radius: 0;' );
// Component
$Less->parse('@padding-base-vertical: 4px;');
$Less->parse('@padding-base-horizontal: 10px;');
$Less->parse('@padding-large-vertical: 8px;');
$Less->parse('@padding-large-horizontal: 14px;');
$Less->parse('@padding-small-vertical: 3px;');
$Less->parse('@padding-small-horizontal: 8px;');
$Less->parse('@padding-xs-vertical: 1px;');
$Less->parse('@padding-xs-horizontal: 3px;');
$Less->parse('@border-radius-base: 3px;');
$Less->parse('@border-radius-large: 5px;');
$Less->parse('@border-radius-small: 2px;');
$Less->parse('@form-group-margin-bottom: 10px;');
$Style = FileSystem::getFileWriter(__DIR__ . '/Bootstrap.css')->getLocation();
file_put_contents($Style, $Less->getCss());
(new Extension())->getDebugger()->screenDump($Less->AllParsedFiles());
            $parser = new Less_Parser($env);
            foreach ($inputs as $input) {
                try {
                    $parser->parseFile($input, $rootpath);
                } catch (Exception $e) {
                    echo "lessc: " . $e->getMessage() . " \n";
                    continue;
                    // Invalid processing
                }
            }
            try {
                file_put_contents($output, $parser->getCss());
            } catch (Exception $e) {
                echo "lessc: " . $e->getMessage() . " \n";
            }
            $lastImports[dirname($input)] = Less_Parser::AllParsedFiles();
            echo "lessc: output file recompilled\n";
        }
        sleep(1);
    }
} else {
    $parser = new Less_Parser($env);
    foreach ($inputs as $input) {
        if ($input == '-') {
            $content = file_get_contents('php://stdin');
            $parser->parse($content);
        } else {
            try {
                $parser->parseFile($input);
            } catch (Exception $e) {
                if (!$silent) {