/var/www/html_sp/wp-content/plugins/loco-translate/src/error/ParseException.php


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
<?php
/**
 * Exception thrown when parsing fails
 */
class Loco_error_ParseException extends Loco_error_Exception {

    
/**
     * @var string[]
     */
    
private $context;

    
/**
     * @param int line number
     * @param int column number
     * @param string source in which to identify line and column
     * @return self
     */
    
public function setContext$line$column$source ){
        
$this->context = [];
        
$lines preg_split'/\\r?\\n/'$source$line+);
        
$offset $line 1;
        if( isset(
$lines[$offset]) ){
            
$this->context[] = $lines[$offset];
            
$this->context[] = str_repeat(' 'max(0,$column-1) ).'^';
        }
        
$this->message sprintf("Error at line %u, column %u: %s"$line$column$this->message );
        return 
$this;
    }


    
/**
     * @param int zero-based offset to failure point
     * @param string source in which to identify line and column
     * @return self
     */
    
public function setOffsetContext$offset$source ){
        
$lines preg_split'/\\r?\\n/'substr($source,0,$offset) );
        
$line count($lines);
        
$column strlenend($lines) );
        return 
$this->setContext$line$column$source );
    }


    
/**
     * @return string
     */
    
public function getContext(){
        return 
is_array($this->context) ? implode("\n",$this->context) : '';
    }

}