diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2015-12-20 09:00:55 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2015-12-20 09:00:55 +0100 |
commit | a2190ac74dd4d7080b12bab90e552d7aa81209ef (patch) | |
tree | 8b31f38de9882d18df54cf8d9e0de74167a094eb /vendor/oyejorge/less.php/lib/Less/Tree/Unit.php | |
parent | 15e69f7b20b6596b9148030acce5b59993b95a45 (diff) | |
parent | 257401d8b2cf661adf36c84b0e3fd1cf85e33c22 (diff) |
Merge branch 'mw-1.26'
Diffstat (limited to 'vendor/oyejorge/less.php/lib/Less/Tree/Unit.php')
-rw-r--r-- | vendor/oyejorge/less.php/lib/Less/Tree/Unit.php | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/vendor/oyejorge/less.php/lib/Less/Tree/Unit.php b/vendor/oyejorge/less.php/lib/Less/Tree/Unit.php new file mode 100644 index 00000000..e13b100e --- /dev/null +++ b/vendor/oyejorge/less.php/lib/Less/Tree/Unit.php @@ -0,0 +1,147 @@ +<?php + +/** + * Unit + * + * @package Less + * @subpackage tree + */ +class Less_Tree_Unit extends Less_Tree{ + + var $numerator = array(); + var $denominator = array(); + public $backupUnit; + public $type = 'Unit'; + + public function __construct($numerator = array(), $denominator = array(), $backupUnit = null ){ + $this->numerator = $numerator; + $this->denominator = $denominator; + $this->backupUnit = $backupUnit; + } + + public function __clone(){ + } + + /** + * @see Less_Tree::genCSS + */ + public function genCSS( $output ){ + + if( $this->numerator ){ + $output->add( $this->numerator[0] ); + }elseif( $this->denominator ){ + $output->add( $this->denominator[0] ); + }elseif( !Less_Parser::$options['strictUnits'] && $this->backupUnit ){ + $output->add( $this->backupUnit ); + return ; + } + } + + public function toString(){ + $returnStr = implode('*',$this->numerator); + foreach($this->denominator as $d){ + $returnStr .= '/'.$d; + } + return $returnStr; + } + + public function __toString(){ + return $this->toString(); + } + + + /** + * @param Less_Tree_Unit $other + */ + public function compare($other) { + return $this->is( $other->toString() ) ? 0 : -1; + } + + public function is($unitString){ + return $this->toString() === $unitString; + } + + public function isLength(){ + $css = $this->toCSS(); + return !!preg_match('/px|em|%|in|cm|mm|pc|pt|ex/',$css); + } + + public function isAngle() { + return isset( Less_Tree_UnitConversions::$angle[$this->toCSS()] ); + } + + public function isEmpty(){ + return !$this->numerator && !$this->denominator; + } + + public function isSingular() { + return count($this->numerator) <= 1 && !$this->denominator; + } + + + public function usedUnits(){ + $result = array(); + + foreach(Less_Tree_UnitConversions::$groups as $groupName){ + $group = Less_Tree_UnitConversions::${$groupName}; + + foreach($this->numerator as $atomicUnit){ + if( isset($group[$atomicUnit]) && !isset($result[$groupName]) ){ + $result[$groupName] = $atomicUnit; + } + } + + foreach($this->denominator as $atomicUnit){ + if( isset($group[$atomicUnit]) && !isset($result[$groupName]) ){ + $result[$groupName] = $atomicUnit; + } + } + } + + return $result; + } + + public function cancel(){ + $counter = array(); + $backup = null; + + foreach($this->numerator as $atomicUnit){ + if( !$backup ){ + $backup = $atomicUnit; + } + $counter[$atomicUnit] = ( isset($counter[$atomicUnit]) ? $counter[$atomicUnit] : 0) + 1; + } + + foreach($this->denominator as $atomicUnit){ + if( !$backup ){ + $backup = $atomicUnit; + } + $counter[$atomicUnit] = ( isset($counter[$atomicUnit]) ? $counter[$atomicUnit] : 0) - 1; + } + + $this->numerator = array(); + $this->denominator = array(); + + foreach($counter as $atomicUnit => $count){ + if( $count > 0 ){ + for( $i = 0; $i < $count; $i++ ){ + $this->numerator[] = $atomicUnit; + } + }elseif( $count < 0 ){ + for( $i = 0; $i < -$count; $i++ ){ + $this->denominator[] = $atomicUnit; + } + } + } + + if( !$this->numerator && !$this->denominator && $backup ){ + $this->backupUnit = $backup; + } + + sort($this->numerator); + sort($this->denominator); + } + + +} + |