Почему фрагменты Atom требуют четырех обратных косых черт в теле, чтобы напечатать одну обратную косую черту - PullRequest
0 голосов
/ 09 мая 2018

Я только что понял это при настройке сниппета.

'.source':
  'shrug':
    'prefix': 'shrug'
    'body': '¯\\\\_(ツ)_/¯'

Для печати типичного ¯\_(ツ)_/¯ плеча вам понадобится 4 обратных слеша. Использование 2 обратной косой черты не вызывает никаких ошибок, но обратная косая черта не будет напечатана. Я бы понял, если вам нужно 2, а зачем 4?

1 Ответ

0 голосов
/ 11 мая 2018

Четыре обратные косые черты в фрагментах атома обусловлены фрагментами, использующими общую нотацию CSON (стиль Coffeescript JSON).

Это хорошо описано в этом комментарии о проблеме из репозитория atom-snippets

Я думаю, что четыре обратных слеша имеют смысл, но в обозначенном смысле неудобно.

Это связано с уровнями интерпретации, через которые проходит фрагмент прежде чем он попадет в ваш текстовый буфер:

  1. Фрагмент объявлен в файле CSON, при разборе строковых элементов в этом формате "чувствителен к обратной косой черте", т.е. \ n представляет новую строку символ и \ представляется как.
  2. Затем фрагмент должен быть анализируется анализатором тела сниппета. Парсер использует один \, чтобы избежать следующий символ, например \ становится. Итак, процесс идет следующим образом:

    \ --CSON -> \ --BodyParser -> \

Причина, по которой работали две обратные косые черты, заключалась в том, что тело фрагмента парсер никогда не обрабатывал экранированные символы обрабатываются явно, а не в общем виде) поэтому мы ошибка № 60.

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

...