File: VariableCall.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (62 lines) | stat: -rw-r--r-- 1,984 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
/**
 * @private
 * @see less-3.13.1.js#VariableCall
 * @todo missing allowRoot implementation https://github.com/less/less.js/commit/b67403d3
 */
class Less_Tree_VariableCall extends Less_Tree {

	public $variable;
	public $type = "VariableCall";
	/**
	 * @var int
	 */
	private $index;
	/**
	 * @var array
	 */
	private $currentFileInfo;

	/**
	 * @param string $variable
	 */
	public function __construct( $variable, $index, $currentFileInfo ) {
		$this->variable = $variable;
		$this->index = $index;
		$this->currentFileInfo = $currentFileInfo;
	}

	public function accept( $visitor ) {
	}

	public function compile( $env ) {
		$detachedRuleset = ( new Less_Tree_Variable( $this->variable, $this->index, $this->currentFileInfo ) )
			->compile( $env );

		if ( !( $detachedRuleset instanceof Less_Tree_DetachedRuleset ) || !$detachedRuleset->ruleset ) {
			// order differs from upstream to simplify the code
			if ( is_array( $detachedRuleset ) ) {
				$rules = new Less_Tree_Ruleset( null, $detachedRuleset );
			} elseif (
				( $detachedRuleset instanceof Less_Tree_Ruleset
				|| $detachedRuleset instanceof Less_Tree_AtRule
				|| $detachedRuleset instanceof Less_Tree_Media
				|| $detachedRuleset instanceof Less_Tree_Mixin_Definition
				) && $detachedRuleset->rules
			) {
				// @todo - note looks like dead code, do we need it ?
				$rules = $detachedRuleset;
			} elseif ( $detachedRuleset instanceof Less_Tree && is_array( $detachedRuleset->value ) ) {
				// @phan-suppress-next-line PhanTypeMismatchArgument False positive
				$rules = new Less_Tree_Ruleset( null, $detachedRuleset->value );
			} else {
				throw new Less_Exception_Compiler( 'Could not evaluate variable call ' . $this->variable );
			}
			$detachedRuleset = new Less_Tree_DetachedRuleset( $rules );
		}
		if ( $detachedRuleset->ruleset ) {
			return $detachedRuleset->callEval( $env );
		}
		throw new Less_Exception_Compiler( 'Could not evaluate variable call ' . $this->variable );
	}
}