aboutsummaryrefslogtreecommitdiff
path: root/lib/less.php/Tree/Media.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/less.php/Tree/Media.php')
-rw-r--r--lib/less.php/Tree/Media.php179
1 files changed, 0 insertions, 179 deletions
diff --git a/lib/less.php/Tree/Media.php b/lib/less.php/Tree/Media.php
deleted file mode 100644
index f9ee9d4..0000000
--- a/lib/less.php/Tree/Media.php
+++ /dev/null
@@ -1,179 +0,0 @@
-<?php
-
-/**
- * Media
- *
- * @package Less
- * @subpackage tree
- */
-class Less_Tree_Media extends Less_Tree{
-
- public $features;
- public $rules;
- public $index;
- public $currentFileInfo;
- public $isReferenced;
- public $type = 'Media';
-
- public function __construct($value = array(), $features = array(), $index = null, $currentFileInfo = null ){
-
- $this->index = $index;
- $this->currentFileInfo = $currentFileInfo;
-
- $selectors = $this->emptySelectors();
-
- $this->features = new Less_Tree_Value($features);
-
- $this->rules = array(new Less_Tree_Ruleset($selectors, $value));
- $this->rules[0]->allowImports = true;
- }
-
- public function accept( $visitor ){
- $this->features = $visitor->visitObj($this->features);
- $this->rules = $visitor->visitArray($this->rules);
- }
-
- /**
- * @see Less_Tree::genCSS
- */
- public function genCSS( $output ){
-
- $output->add( '@media ', $this->currentFileInfo, $this->index );
- $this->features->genCSS( $output );
- Less_Tree::outputRuleset( $output, $this->rules);
-
- }
-
- public function compile($env) {
-
- $media = new Less_Tree_Media(array(), array(), $this->index, $this->currentFileInfo );
-
- $strictMathBypass = false;
- if( Less_Parser::$options['strictMath'] === false) {
- $strictMathBypass = true;
- Less_Parser::$options['strictMath'] = true;
- }
-
- $media->features = $this->features->compile($env);
-
- if( $strictMathBypass ){
- Less_Parser::$options['strictMath'] = false;
- }
-
- $env->mediaPath[] = $media;
- $env->mediaBlocks[] = $media;
-
- array_unshift($env->frames, $this->rules[0]);
- $media->rules = array($this->rules[0]->compile($env));
- array_shift($env->frames);
-
- array_pop($env->mediaPath);
-
- return !$env->mediaPath ? $media->compileTop($env) : $media->compileNested($env);
- }
-
- public function variable($name) {
- return $this->rules[0]->variable($name);
- }
-
- public function find($selector) {
- return $this->rules[0]->find($selector, $this);
- }
-
- public function emptySelectors(){
- $el = new Less_Tree_Element('','&', $this->index, $this->currentFileInfo );
- $sels = array( new Less_Tree_Selector(array($el), array(), null, $this->index, $this->currentFileInfo) );
- $sels[0]->mediaEmpty = true;
- return $sels;
- }
-
- public function markReferenced(){
- $this->rules[0]->markReferenced();
- $this->isReferenced = true;
- Less_Tree::ReferencedArray($this->rules[0]->rules);
- }
-
- // evaltop
- public function compileTop($env) {
- $result = $this;
-
- if (count($env->mediaBlocks) > 1) {
- $selectors = $this->emptySelectors();
- $result = new Less_Tree_Ruleset($selectors, $env->mediaBlocks);
- $result->multiMedia = true;
- }
-
- $env->mediaBlocks = array();
- $env->mediaPath = array();
-
- return $result;
- }
-
- public function compileNested($env) {
- $path = array_merge($env->mediaPath, array($this));
-
- // Extract the media-query conditions separated with `,` (OR).
- foreach ($path as $key => $p) {
- $value = $p->features instanceof Less_Tree_Value ? $p->features->value : $p->features;
- $path[$key] = is_array($value) ? $value : array($value);
- }
-
- // Trace all permutations to generate the resulting media-query.
- //
- // (a, b and c) with nested (d, e) ->
- // a and d
- // a and e
- // b and c and d
- // b and c and e
-
- $permuted = $this->permute($path);
- $expressions = array();
- foreach($permuted as $path){
-
- for( $i=0, $len=count($path); $i < $len; $i++){
- $path[$i] = Less_Parser::is_method($path[$i], 'toCSS') ? $path[$i] : new Less_Tree_Anonymous($path[$i]);
- }
-
- for( $i = count($path) - 1; $i > 0; $i-- ){
- array_splice($path, $i, 0, array(new Less_Tree_Anonymous('and')));
- }
-
- $expressions[] = new Less_Tree_Expression($path);
- }
- $this->features = new Less_Tree_Value($expressions);
-
-
-
- // Fake a tree-node that doesn't output anything.
- return new Less_Tree_Ruleset(array(), array());
- }
-
- public function permute($arr) {
- if (!$arr)
- return array();
-
- if (count($arr) == 1)
- return $arr[0];
-
- $result = array();
- $rest = $this->permute(array_slice($arr, 1));
- foreach ($rest as $r) {
- foreach ($arr[0] as $a) {
- $result[] = array_merge(
- is_array($a) ? $a : array($a),
- is_array($r) ? $r : array($r)
- );
- }
- }
-
- return $result;
- }
-
- public function bubbleSelectors($selectors) {
-
- if( !$selectors) return;
-
- $this->rules = array(new Less_Tree_Ruleset( $selectors, array($this->rules[0])));
- }
-
-}