Фрагмент 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
, чтобы запустить преобразование фрагмента.