Js-beautify: Возможность сохранить существующее выравнивание переменных и объектов (например, save_array_indentation)

Созданный на 31 янв. 2014  ·  18Комментарии  ·  Источник: beautify-web/js-beautify

Было бы возможно/приемлемо добавить опцию, которая конвертирует

var short_var = "value";
var very_long_var = "value";

var obj = {
    "short_prop": "value",
    "very_long_property": "value" 
}

к

var short_var     = "value";
var very_long_var = "value";

var obj = {
    "short_prop"        : "value",
    "very_long_property": "value" 
}
javascript enhancement

Самый полезный комментарий

+1. Решение, которое либо обрабатывает интервалы, либо, по крайней мере, игнорирует интервалы внутри объектов. Я даже не возражаю против того, чтобы сделать интервал самостоятельно (мой редактор может это сделать), если JSB не отменит мои изменения при сохранении.

Все 18 Комментарий

Теоретически — да, не против духа красавца,
но практическая реализация была бы довольно ужасной и хакерской, синтаксический анализатор не очень подходит для наблюдения за кодом способами, необходимыми для этого.

См. № 200.

Спасибо.
Вместо этого, можем ли мы просто добавить параметр, запрещающий бьютификатору удалять эти лишние пробелы?
Мы уже используем это «правило выравнивания» в нашем проекте, и я хотел бы использовать декоратор и сохранить выравнивание.
Это слишком специфично для реализации?

Интересно.

Да, это кажется возможным — у нас есть возможность сохранить отступ массива, который служит той же цели. Путь кода для этой функции будет аналогичен этому. (Я отредактировал заголовок для этого.)

Однако для нас это менее приоритетно, чем несколько других очень востребованных функций и исправлений. Вы можете написать код и отправить PR, но я предупреждаю вас, что мы также просим людей отправлять тесты, и мы пытаемся свести к минимуму изменения API, особенно в командной строке. Поэтому, возможно, потребуется дополнительное обсуждение.

В худшем случае, если мы не примем ваш PR, это то, что у вас есть патч, который вы можете использовать локально. :улыбка:

+1

Я понятия не имею, какое значение имеют особенности PHP_Beautify в этом проекте. :улыбка:

@bitwiseman Это демонстрирует прецедент для функции

Извини, я в основном дразнил тебя. :улыбка:
Я уже согласился, что это действительная и потенциально полезная функция, просто более низкий приоритет и высокая сложность, чем у других открытых в настоящее время проблем.

Я постараюсь найти свободное время, чтобы сделать PR :)

Небольшой непрошенный совет: я бы попробовал сначала реализовать это только для буквального случая объекта. Это относительно четко распознаваемое начало и конец, во время которых вы можете легко отслеживать строки, в которых объявлены поля, и длину полей. Сделайте PR для этого, мы можем обсудить и решить любые шероховатости, а затем вернуться и заняться этим случаем var. Если вы застряли, черкните мне строку или промежуточную ветку, чтобы посмотреть.

Извините за невежество, но есть ли способ сохранить форматирование объекта, например:

var obj = { a: 123, b: "xyz" };

упс, похоже, я должен смотреть на # 315 и # 370

eslint может сделать это для вас с помощью
~Устранение всех автоматически устраняемых проблем~
и конфигурация:
~"ключевой интервал": [2, {"afterColon": правда,"выравнивание": "значение",«доКолона»: ложь}]~

Это должно быть ссылка на #365 и #603.

@clawconduce - Согласен, спасибо.

+1. Решение, которое либо обрабатывает интервалы, либо, по крайней мере, игнорирует интервалы внутри объектов. Я даже не возражаю против того, чтобы сделать интервал самостоятельно (мой редактор может это сделать), если JSB не отменит мои изменения при сохранении.

См. # 1209 , это не очень красиво, но это, по крайней мере, начало, и его можно объединить с некоторой любовью.

Я сделал это быстро в # 1209, но я не думаю, что у меня будет время, чтобы как следует закончить.

Сложнее понять, когда игнорировать эту логику — я поддерживаю некоторые файлы, где ключи — это имена функций, а значения — сами функции, поэтому объекты состоят из сотен строк, и я не хочу, чтобы они были с отступом. Может быть, если в объекте появляется функция, этого форматирования не происходит? Может быть, этого не происходит, если объект занимает определенное количество строк?

В любом случае, надеюсь, что кто-то может поднять это!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги