Там не указывается конкретно, но да, есть
попытался в онлайн-парсере получить AST для "console.log("asdf")" и "console.log("asdf");". В JSON вроде есть разница, но не понятно, хватит ли этого чтобы собрать БЕЗ ИЗМЕНЕНИЙ оба варианта...
Надо сидеть и разбираться. Может быть трансформ через бабель не поможет.
Спасибо! Сейчас попробую...
почитал доки по бабель-генератору. Встретил строку - Note: The symbols like white spaces or new line characters are not preserved in the AST. When Babel generator prints code from the AST, the output format is not guaranteed. при этом комменты и точки запятой научился "не исправлять", даже если код вида ;;;;;console.log("123");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; // +++ Но лишние пробелы удаляются...
Да, в AST explorer видно, что форматирование умеет сохранять ESLint. Можно в его сторону копнуть
У меня-то задача именно "поменять AST и вернуть как было но с изменениями в коде". Например меня бесит оформление в виде "function name() ПРОБЕЛ{" (при этом не удобно "перенос длинной строки" работает). А мне его везде бабель вставляет... Буду думать!
ESLint тоже строит AST и потом преобразовывает в код
Вот этого не знал! Спасибо! Думал там просто "облагораживание кода по маскам"
Здесь не ясно, конечно. Бабель преобразовывает код для того, чтобы он был готов к деплою. Какая разница в каком он виде? Исходник то остается чистым, с твоим форматированием
У меня задача как раз "исходник" подправлять. Прямо в IDE. Например все переменные aaa_* заменить на bbb_* одним "проходом". Или "закоментировать 5й параметр в функции в /*, parm5*/" одной горячей кнопкой.
Переименование переменных делается средствами IDE, комментировать 5 параметр в функцией одной горячей кнопкой...хз. В функции вообще не должно быть пять параметров))
...от функции зависит. Может быть и больше! Особенно на стадии отладки когда можно добавить __INFO с текстовым описанием "как мы сюда попадаем" и десятком отладочных параметров которые только для консоли нужны. Переименовывание переменных ПОШТУЧНО в IDE есть, но чтобы ВСЕ "по маске" переименовать, при этом не трогая названия функций или переменных вне "окружения функции/класса"... Я и хочу "плагин к IDE" написать.
Это будет не просто. Задача не тривиальная. Выдели не нее побольше времени :)
Знаю! Сейчас буду Eslint изучать в этом направлении...
Обсуждают сегодня