1
0
Fork 0
php-language-server/src/Protocol/Range.php

57 lines
1.2 KiB
PHP
Raw Normal View History

2016-08-22 20:40:16 +00:00
<?php
namespace LanguageServer\Protocol;
use PhpParser\Node;
2016-08-22 20:40:16 +00:00
/**
* A range in a text document expressed as (zero-based) start and end positions.
*/
class Range
{
/**
* The range's start position.
*
* @var Position
*/
public $start;
/**
* The range's end position.
*
* @var Position
*/
public $end;
2016-08-25 13:27:14 +00:00
/**
* Returns the range the node spans
*
* @param Node $node
* @return self
*/
public static function fromNode(Node $node)
{
return new self(
new Position($node->getAttribute('startLine') - 1, $node->getAttribute('startColumn') - 1),
new Position($node->getAttribute('endLine') - 1, $node->getAttribute('endColumn'))
);
}
2016-08-25 13:27:14 +00:00
public function __construct(Position $start = null, Position $end = null)
{
$this->start = $start;
$this->end = $end;
}
/**
* Checks if a position is within the range
*
* @param Position $position
* @return bool
*/
public function includes(Position $position): bool
{
return $this->start->compare($position) <= 0 && $this->end->compare($position) >= 0;
}
2016-08-22 20:40:16 +00:00
}