]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/oyejorge/less.php/lib/Less/Environment.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oyejorge / less.php / lib / Less / Environment.php
diff --git a/vendor/oyejorge/less.php/lib/Less/Environment.php b/vendor/oyejorge/less.php/lib/Less/Environment.php
new file mode 100644 (file)
index 0000000..b220301
--- /dev/null
@@ -0,0 +1,166 @@
+<?php
+
+
+/**
+ * Environment
+ *
+ * @package Less
+ * @subpackage environment
+ */
+class Less_Environment{
+
+       //public $paths = array();                              // option - unmodified - paths to search for imports on
+       //public static $files = array();               // list of files that have been imported, used for import-once
+       //public $rootpath;                                             // option - rootpath to append to URL's
+       //public static $strictImports = null;  // option -
+       //public $insecure;                                             // option - whether to allow imports from insecure ssl hosts
+       //public $processImports;                               // option - whether to process imports. if false then imports will not be imported
+       //public $javascriptEnabled;                    // option - whether JavaScript is enabled. if undefined, defaults to true
+       //public $useFileCache;                                 // browser only - whether to use the per file session cache
+       public $currentFileInfo;                                // information about the current file - for error reporting and importing and making urls relative etc.
+
+       public $importMultiple = false;                 // whether we are currently importing multiple copies
+
+
+       /**
+        * @var array
+        */
+       public $frames = array();
+
+       /**
+        * @var array
+        */
+       public $mediaBlocks = array();
+
+       /**
+        * @var array
+        */
+       public $mediaPath = array();
+
+       public static $parensStack = 0;
+
+       public static $tabLevel = 0;
+
+       public static $lastRule = false;
+
+       public static $_outputMap;
+
+       public static $mixin_stack = 0;
+
+       /**
+        * @var array
+        */
+       public $functions = array();
+
+
+       public function Init(){
+
+               self::$parensStack = 0;
+               self::$tabLevel = 0;
+               self::$lastRule = false;
+               self::$mixin_stack = 0;
+
+               if( Less_Parser::$options['compress'] ){
+
+                       Less_Environment::$_outputMap = array(
+                               ','     => ',',
+                               ': ' => ':',
+                               ''  => '',
+                               ' ' => ' ',
+                               ':' => ' :',
+                               '+' => '+',
+                               '~' => '~',
+                               '>' => '>',
+                               '|' => '|',
+                       '^' => '^',
+                       '^^' => '^^'
+                       );
+
+               }else{
+
+                       Less_Environment::$_outputMap = array(
+                               ','     => ', ',
+                               ': ' => ': ',
+                               ''  => '',
+                               ' ' => ' ',
+                               ':' => ' :',
+                               '+' => ' + ',
+                               '~' => ' ~ ',
+                               '>' => ' > ',
+                               '|' => '|',
+                       '^' => ' ^ ',
+                       '^^' => ' ^^ '
+                       );
+
+               }
+       }
+
+
+       public function copyEvalEnv($frames = array() ){
+               $new_env = new Less_Environment();
+               $new_env->frames = $frames;
+               return $new_env;
+       }
+
+
+       public static function isMathOn(){
+               return !Less_Parser::$options['strictMath'] || Less_Environment::$parensStack;
+       }
+
+       public static function isPathRelative($path){
+               return !preg_match('/^(?:[a-z-]+:|\/)/',$path);
+       }
+
+
+       /**
+        * Canonicalize a path by resolving references to '/./', '/../'
+        * Does not remove leading "../"
+        * @param string path or url
+        * @return string Canonicalized path
+        *
+        */
+       public static function normalizePath($path){
+
+               $segments = explode('/',$path);
+               $segments = array_reverse($segments);
+
+               $path = array();
+               $path_len = 0;
+
+               while( $segments ){
+                       $segment = array_pop($segments);
+                       switch( $segment ) {
+
+                               case '.':
+                               break;
+
+                               case '..':
+                                       if( !$path_len || ( $path[$path_len-1] === '..') ){
+                                               $path[] = $segment;
+                                               $path_len++;
+                                       }else{
+                                               array_pop($path);
+                                               $path_len--;
+                                       }
+                               break;
+
+                               default:
+                                       $path[] = $segment;
+                                       $path_len++;
+                               break;
+                       }
+               }
+
+               return implode('/',$path);
+       }
+
+
+       public function unshiftFrame($frame){
+               array_unshift($this->frames, $frame);
+       }
+
+       public function shiftFrame(){
+               return array_shift($this->frames);
+       }
+
+}