b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / a / home / dev2.destoffenstraat.com / vendor / wikimedia / less.php / lib / Less / Exception /
Filename/home/a/home/dev2.destoffenstraat.com/vendor/wikimedia/less.php/lib/Less/Exception/Chunk.php
Size5.43 kb
Permissionrw-r--r--
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified06-Nov-2019 19:30
Last accessed23-Aug-2025 16:31
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php

/**
* Chunk Exception
*
* @package Less
* @subpackage exception
*/
class Less_Exception_Chunk extends Less_Exception_Parser{


protected $parserCurrentIndex = 0;

protected $emitFrom = 0;

protected $input_len;


/**
* Constructor
*
* @param string $input
* @param Exception $previous Previous exception
* @param integer $index The current parser index
* @param Less_FileInfo|string $currentFile The file
* @param integer $code The exception code
*/
public function __construct($input, Exception $previous = null, $index = null, $currentFile = null, $code = 0){

$this->message = 'ParseError: Unexpected input'; //default message

$this->index = $index;

$this->currentFile = $currentFile;

$this->input = $input;
$this->input_len = strlen($input);

$this->Chunks();
$this->genMessage();
}


/**
* See less.js chunks()
* We don't actually need the chunks
*
*/
protected function Chunks(){
$level = 0;
$parenLevel = 0;
$lastMultiCommentEndBrace = null;
$lastOpening = null;
$lastMultiComment = null;
$lastParen = null;

for( $this->parserCurrentIndex = 0; $this->parserCurrentIndex < $this->input_len; $this->parserCurrentIndex++ ){
$cc = $this->CharCode($this->parserCurrentIndex);
if ((($cc >= 97) && ($cc <= 122)) || ($cc < 34)) {
// a-z or whitespace
continue;
}

switch ($cc) {

// (
case 40:
$parenLevel++;
$lastParen = $this->parserCurrentIndex;
break;

// )
case 41:
$parenLevel--;
if( $parenLevel < 0 ){
return $this->fail("missing opening `(`");
}
break;

// ;
case 59:
//if (!$parenLevel) { $this->emitChunk(); }
break;

// {
case 123:
$level++;
$lastOpening = $this->parserCurrentIndex;
break;

// }
case 125:
$level--;
if( $level < 0 ){
return $this->fail("missing opening `{`");

}
//if (!$level && !$parenLevel) { $this->emitChunk(); }
break;
// \
case 92:
if ($this->parserCurrentIndex < $this->input_len - 1) { $this->parserCurrentIndex++; break; }
return $this->fail("unescaped `\\`");

// ", ' and `
case 34:
case 39:
case 96:
$matched = 0;
$currentChunkStartIndex = $this->parserCurrentIndex;
for ($this->parserCurrentIndex = $this->parserCurrentIndex + 1; $this->parserCurrentIndex < $this->input_len; $this->parserCurrentIndex++) {
$cc2 = $this->CharCode($this->parserCurrentIndex);
if ($cc2 > 96) { continue; }
if ($cc2 == $cc) { $matched = 1; break; }
if ($cc2 == 92) { // \
if ($this->parserCurrentIndex == $this->input_len - 1) {
return $this->fail("unescaped `\\`");
}
$this->parserCurrentIndex++;
}
}
if ($matched) { break; }
return $this->fail("unmatched `" . chr($cc) . "`", $currentChunkStartIndex);

// /, check for comment
case 47:
if ($parenLevel || ($this->parserCurrentIndex == $this->input_len - 1)) { break; }
$cc2 = $this->CharCode($this->parserCurrentIndex+1);
if ($cc2 == 47) {
// //, find lnfeed
for ($this->parserCurrentIndex = $this->parserCurrentIndex + 2; $this->parserCurrentIndex < $this->input_len; $this->parserCurrentIndex++) {
$cc2 = $this->CharCode($this->parserCurrentIndex);
if (($cc2 <= 13) && (($cc2 == 10) || ($cc2 == 13))) { break; }
}
} else if ($cc2 == 42) {
// /*, find */
$lastMultiComment = $currentChunkStartIndex = $this->parserCurrentIndex;
for ($this->parserCurrentIndex = $this->parserCurrentIndex + 2; $this->parserCurrentIndex < $this->input_len - 1; $this->parserCurrentIndex++) {
$cc2 = $this->CharCode($this->parserCurrentIndex);
if ($cc2 == 125) { $lastMultiCommentEndBrace = $this->parserCurrentIndex; }
if ($cc2 != 42) { continue; }
if ($this->CharCode($this->parserCurrentIndex+1) == 47) { break; }
}
if ($this->parserCurrentIndex == $this->input_len - 1) {
return $this->fail("missing closing `*/`", $currentChunkStartIndex);
}
}
break;

// *, check for unmatched */
case 42:
if (($this->parserCurrentIndex < $this->input_len - 1) && ($this->CharCode($this->parserCurrentIndex+1) == 47)) {
return $this->fail("unmatched `/*`");
}
break;
}
}

if( $level !== 0 ){
if( ($lastMultiComment > $lastOpening) && ($lastMultiCommentEndBrace > $lastMultiComment) ){
return $this->fail("missing closing `}` or `*/`", $lastOpening);
} else {
return $this->fail("missing closing `}`", $lastOpening);
}
} else if ( $parenLevel !== 0 ){
return $this->fail("missing closing `)`", $lastParen);
}


//chunk didn't fail


//$this->emitChunk(true);
}

public function CharCode($pos){
return ord($this->input[$pos]);
}


public function fail( $msg, $index = null ){

if( !$index ){
$this->index = $this->parserCurrentIndex;
}else{
$this->index = $index;
}
$this->message = 'ParseError: '.$msg;
}


/*
function emitChunk( $force = false ){
$len = $this->parserCurrentIndex - $this->emitFrom;
if ((($len < 512) && !$force) || !$len) {
return;
}
$chunks[] = substr($this->input, $this->emitFrom, $this->parserCurrentIndex + 1 - $this->emitFrom );
$this->emitFrom = $this->parserCurrentIndex + 1;
}
*/

}