summaryrefslogtreecommitdiffstats
path: root/library/vendor/lessphp/lib/Less/Environment.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/vendor/lessphp/lib/Less/Environment.php')
-rw-r--r--library/vendor/lessphp/lib/Less/Environment.php156
1 files changed, 156 insertions, 0 deletions
diff --git a/library/vendor/lessphp/lib/Less/Environment.php b/library/vendor/lessphp/lib/Less/Environment.php
new file mode 100644
index 0000000..5eddc08
--- /dev/null
+++ b/library/vendor/lessphp/lib/Less/Environment.php
@@ -0,0 +1,156 @@
+<?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 );
+ }
+
+}