Фрагмент VSCode: добавление нескольких объектов в конструктор JS

Я пытаюсь создать простой фрагмент, который позволяет мне создавать конструкторы JS. Пока что у меня есть

"class constructor": {
    "prefix": "class",
    "body": [
        "class ${1:ClassName} {",
            "\t\tconstructor({${2:thisName}: ${2}}) {",
                "\t\t\tthis.${2} = ${2}",
            "\t}",
        "}"
    ],
    "description": "class constructor template"
},

Это работает, как и ожидалось, но я пытаюсь увидеть, возможно ли добавить несколько записей, что также создает новую строку для this, но в этом случае фрагмент запускается, как только я заполняю детали для $2{thisName}, Я надеюсь на возможность добавить несколько пар ключ-значение.

Таким образом, вместо этого заканчивается:

class ClassName {
constructor({ thisName:  thisName}) {
  this. thisName =  thisName

}}

Я хотел бы иметь возможность добавлять другие элементы, чтобы это выглядело так; где новая строка для this.another = another создается автоматически.

class ClassName {
constructor({ thisName:  thisName, another: another}) {
  this. thisName = thisName
  this.another = another // this is create

}}

${3}.. здесь не работает, потому что может быть n элементов.

0 ответов

Попробуй это:

"class constructor": {
  "prefix": "class",
  "body": [

    "class ${1:ClassName} {",
          "\t\tconstructor({${2/([^,]+)([,\\s]*|)/$1: $1${2:+, }/g}}) {",
          "${2/([^,]+)([,\\s]*|)/\t\t\tthis.$1 = $1${2:+\n}/g}",
          "\t}",
      "}"
  ],
  "description": "class constructor template"
},

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

Вы можете использовать любое количество аргументов во фрагменте, если вы захватываете их в одной группе захвата регулярных выражений - здесь каждый аргумент находится в группе захвата $1.

Потом каждый заменяется! В вашем случае\t\t\tthis.$1 = $1${2:+\nвторой раз. После вкладок группа захвата используется вthis.$1 = $1

Затем проверяется группа захвата 2. ${2:+\n}. Он либо имеет,или ничего. Если что-то есть, добавьте\n, иначе ничего не будет добавлено.

Чтобы это регулярное выражение работало, вы должны ввести свои аргументы как

arg1, arg2, arg3, arg4

- с разделителями-запятыми (с пробелами после запятых или без них). После того, как ваш последний аргумент ударилtab, чтобы запустить преобразование фрагмента.

Другие вопросы по тегам