Фрагмент кода VS с несколькими преобразованиями - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь создать фрагмент, который будет принимать содержимое буфера обмена (текст заголовка в документе markdown) и преобразовывать его в ссылку на этот раздел. Например, если мой буфер обмена содержит: Some Heading - 20191107, то я хочу, чтобы было выведено следующее:

[Some Heading - 20191107](filename.md#some-heading---20191107)

Вот мой фрагмент VS Code для markdown:

    "link to this section": {
        "prefix": "isection",
        "body": [
            "[${1:${CLIPBOARD}}](${TM_FILENAME}#${CLIPBOARD/ /-/g})"
        ],
        "description": "Insert link to section whose heading text is in the clipboard"
    }

Это первое преобразование, но я не могу понять, как вложить несколько преобразований:

  • Заменить все пробелы дефисом.
  • Изменить все на строчные.
  • Удалите все символы, соответствующие [^a-z0-9-]

Контрольный пример

Чтобы уточнить мой контрольный пример для @Mark, в документе markdown в VS Code, ясоздайте заголовок раздела, например:

# 20191107 - @#$%^& This is a section - 20191107

Затем я копирую текст 20191107 - @#$%^& This is a section - 20191107 и запускаю фрагмент, который вы для меня исправили. Он выводит:

[20191107 - @#$%^& This is a section - 20191107](tips.tech.git.md#20191107----this-is-a-section---20191107)

Какая действительная ссылка на заголовок!

1 Ответ

1 голос
/ 07 ноября 2019

Вот решение для ваших первых двух требований (Replace all space with a hyphen и Change all to lower case):

"[${1:${CLIPBOARD}}](${TM_FILENAME}#${CLIPBOARD/(([^\\s]*)(\\s))/${2:/downcase}-/g})"

Я продолжу смотреть на третье требование (Remove any characters matching [^a-z0-9-]), чтобы увидеть, можно ли это сделать.

Содержит ли ваш заголовок текст когда-либо цифры? И будет ли когда-нибудь раздел цифр содержать буквы?


Попробуйте выполнить все три требования:

"[${1:${CLIPBOARD}}](${TM_FILENAME}#${CLIPBOARD/(([\\w-]*)([^\\w\\s]*)*(\\s)*)/${2:/downcase}${4:+-}/g})"

Этот последний код будет принимать [^a-z0-9-] символов вне якорной части (после #), но не из первой части [Some Heading - 20191107]. Это может быть сделано и в случае необходимости.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...