Принтер php-parser с максимальной длиной строки
Интересно, существует ли симпатичный принтер для php-парсера, который способен обеспечить желаемую максимальную длину строки?
(Это кажется довольно простым для реализации в некоторых базовых случаях (список элементов массива, список аргументов функции), но это начинает озадачивать переменными выражениями и т. Д.)
2 ответа
Насколько я знаю, не существует симпатичного принтера для PHP-Parser, который учитывал бы правильное поле.
Там есть стандартный симпатичный принтер самого PHP-Parser.
Есть также симпатичный принтер PSR-2 для PHP-Parser.
DIY
Если этого недостаточно, вам придется написать симпатичный принтер самостоятельно.
ИМХО, это не должно быть трудно. Вы можете просто переносить, когда узел превышает правое поле и отступать 4 пробела (или что вы используете). Затем вы можете начать оптимизировать такие вещи, как определения массивов и тому подобное.
Извините за задержку с ответом. Вы также можете использовать PHP Front. Отступы выполняются для всех вложений операторов, 2 пробела на вложенность.
Возможен индивидуальный отступ. И это доступно в PHP Front.
Парсер и симпатичный принтер также тестируются вместе, используя тестовые файлы исходного дистрибутива PHP.
Каждый тестовый файл анализируется, печатается и снова печатается.
Правильность этого обхода проверяется путем выполнения различий между двумя разобранными и двумя симпатично распечатанными файлами.
Однако я получил рекомендацию использовать Стандартный, так как он имеет много функций. Имеет переменные выражения и функции выражений массива. Где, как и в PHP, все еще есть некоторые ошибки, доступные для использования массивов.
Стандартный принтер Pretty (переменные выражения и массив)
public function pExpr_Variable(Expr\Variable $node) {
if ($node->name instanceof Expr) {
return '${' . $this->p($node->name) . '}';
} else {
return '$' . $node->name;
}
}
public function pExpr_Array(Expr\Array_ $node) {
return 'array(' . $this->pCommaSeparated($node->items) . ')';
}