]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/oyejorge/less.php/lib/Less/Tree/Quoted.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oyejorge / less.php / lib / Less / Tree / Quoted.php
diff --git a/vendor/oyejorge/less.php/lib/Less/Tree/Quoted.php b/vendor/oyejorge/less.php/lib/Less/Tree/Quoted.php
new file mode 100644 (file)
index 0000000..80063b5
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * Quoted
+ *
+ * @package Less
+ * @subpackage tree
+ */
+class Less_Tree_Quoted extends Less_Tree{
+       public $escaped;
+       public $value;
+       public $quote;
+       public $index;
+       public $currentFileInfo;
+       public $type = 'Quoted';
+
+       /**
+        * @param string $str
+        */
+       public function __construct($str, $content = '', $escaped = false, $index = false, $currentFileInfo = null ){
+               $this->escaped = $escaped;
+               $this->value = $content;
+               if( $str ){
+                       $this->quote = $str[0];
+               }
+               $this->index = $index;
+               $this->currentFileInfo = $currentFileInfo;
+       }
+
+    /**
+     * @see Less_Tree::genCSS
+     */
+    public function genCSS( $output ){
+               if( !$this->escaped ){
+                       $output->add( $this->quote, $this->currentFileInfo, $this->index );
+        }
+        $output->add( $this->value );
+        if( !$this->escaped ){
+                       $output->add( $this->quote );
+        }
+    }
+
+       public function compile($env){
+
+               $value = $this->value;
+               if( preg_match_all('/`([^`]+)`/', $this->value, $matches) ){
+                       foreach($matches as $i => $match){
+                               $js = new Less_Tree_JavaScript($matches[1], $this->index, true);
+                               $js = $js->compile()->value;
+                               $value = str_replace($matches[0][$i], $js, $value);
+                       }
+               }
+
+               if( preg_match_all('/@\{([\w-]+)\}/',$value,$matches) ){
+                       foreach($matches[1] as $i => $match){
+                               $v = new Less_Tree_Variable('@' . $match, $this->index, $this->currentFileInfo );
+                               $v = $v->compile($env);
+                               $v = ($v instanceof Less_Tree_Quoted) ? $v->value : $v->toCSS();
+                               $value = str_replace($matches[0][$i], $v, $value);
+                       }
+               }
+
+               return new Less_Tree_Quoted($this->quote . $value . $this->quote, $value, $this->escaped, $this->index, $this->currentFileInfo);
+       }
+
+    public function compare($x) {
+
+               if( !Less_Parser::is_method($x, 'toCSS') ){
+                       return -1;
+               }
+
+               $left = $this->toCSS();
+               $right = $x->toCSS();
+
+               if ($left === $right) {
+                       return 0;
+               }
+
+               return $left < $right ? -1 : 1;
+       }
+}