Initial Commit
commit
b1656f6884
|
@ -0,0 +1,17 @@
|
|||
|
||||
[*]
|
||||
insert_final_newline = true
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.json,*.yml]
|
||||
indent_size = 2
|
||||
|
||||
[composer.json]
|
||||
indent_size = 4
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
|
@ -0,0 +1,4 @@
|
|||
.DS_Store
|
||||
.vscode
|
||||
vendor/
|
||||
composer.lock
|
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
|
||||
use Sabre\Event\Loop;
|
||||
use Sabre\Event\EventEmitter;
|
||||
|
||||
abstract class ParsingMode {
|
||||
const HEADERS = 1;
|
||||
const BODY = 2;
|
||||
}
|
||||
|
||||
$eventEmitter = new EventEmitter();
|
||||
$buffer = '';
|
||||
$parsingMode = ParsingMode::HEADERS;
|
||||
$headers = [];
|
||||
$contentLength = 0;
|
||||
|
||||
Loop\addReadStream(STDIN, function() use ($buffer, $parsingMode, $headers, $contentLength, $eventEmitter) {
|
||||
$buffer .= fgetc(STDIN);
|
||||
switch ($parsingMode) {
|
||||
case ParsingMode::HEADERS:
|
||||
if (substr($buffer, -4) === '\r\n\r\n') {
|
||||
$parsingMode = ParsingMode::BODY;
|
||||
$contentLength = (int)$headers['Content-Length'];
|
||||
$buffer = '';
|
||||
} else if (substr($buffer, -2) === '\r\n') {
|
||||
$parts = explode(': ', $buffer);
|
||||
$headers[$parts[0]] = $parts[1];
|
||||
$buffer = '';
|
||||
}
|
||||
break;
|
||||
case ParsingMode::BODY:
|
||||
if (strlen($buffer) === $contentLength) {
|
||||
$body = json_decode($buffer);
|
||||
$eventEmitter->emit($body->method, [$body->params]);
|
||||
$parsingMode = ParsingMode::HEADERS;
|
||||
$buffer = '';
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
Loop\run();
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"name": "language-server",
|
||||
"description": "PHP Implementation of the Visual Studio Code Language Server Protocol",
|
||||
"version": "1.0.0",
|
||||
"bin": ["bin/main.php"],
|
||||
"minimum-stability": "dev",
|
||||
"require": {
|
||||
"nikic/php-parser": "3.0.0alpha1",
|
||||
"phpdocumentor/reflection-docblock": "^3.0",
|
||||
"sabre/event": "^3.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"LanguageServer\\": "src/"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue