Принтер 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) . ')';
    }
Другие вопросы по тегам