]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/oyejorge/less.php/lib/Less/Tree/Url.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oyejorge / less.php / lib / Less / Tree / Url.php
diff --git a/vendor/oyejorge/less.php/lib/Less/Tree/Url.php b/vendor/oyejorge/less.php/lib/Less/Tree/Url.php
new file mode 100644 (file)
index 0000000..ef9c3c6
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+/**
+ * Url
+ *
+ * @package Less
+ * @subpackage tree
+ */
+class Less_Tree_Url extends Less_Tree{
+
+       public $attrs;
+       public $value;
+       public $currentFileInfo;
+       public $isEvald;
+       public $type = 'Url';
+
+       public function __construct($value, $currentFileInfo = null, $isEvald = null){
+               $this->value = $value;
+               $this->currentFileInfo = $currentFileInfo;
+               $this->isEvald = $isEvald;
+       }
+
+    public function accept( $visitor ){
+               $this->value = $visitor->visitObj($this->value);
+       }
+
+    /**
+     * @see Less_Tree::genCSS
+     */
+    public function genCSS( $output ){
+               $output->add( 'url(' );
+               $this->value->genCSS( $output );
+               $output->add( ')' );
+       }
+
+       /**
+        * @param Less_Functions $ctx
+        */
+       public function compile($ctx){
+               $val = $this->value->compile($ctx);
+
+               if( !$this->isEvald ){
+                       // Add the base path if the URL is relative
+                       if( Less_Parser::$options['relativeUrls']
+                               && $this->currentFileInfo
+                               && is_string($val->value)
+                               && Less_Environment::isPathRelative($val->value)
+                       ){
+                               $rootpath = $this->currentFileInfo['uri_root'];
+                               if ( !$val->quote ){
+                                       $rootpath = preg_replace('/[\(\)\'"\s]/', '\\$1', $rootpath );
+                               }
+                               $val->value = $rootpath . $val->value;
+                       }
+
+                       $val->value = Less_Environment::normalizePath( $val->value);
+               }
+
+               // Add cache buster if enabled
+               if( Less_Parser::$options['urlArgs'] ){
+                       if( !preg_match('/^\s*data:/',$val->value) ){
+                               $delimiter = strpos($val->value,'?') === false ? '?' : '&';
+                               $urlArgs = $delimiter . Less_Parser::$options['urlArgs'];
+                               $hash_pos = strpos($val->value,'#');
+                               if( $hash_pos !== false ){
+                                       $val->value = substr_replace($val->value,$urlArgs, $hash_pos, 0);
+                               } else {
+                                       $val->value .= $urlArgs;
+                               }
+                       }
+               }
+
+               return new Less_Tree_URL($val, $this->currentFileInfo, true);
+       }
+
+}