Sublime Snippet, если нет регулярных выражений, используйте строку "null"

Я пытаюсь написать фрагмент. Для этого поста я супер упростил его. Если я запускаю его на этом выборе:

arg1

фрагмент должен вывести:

doFunc ('arg1', 'null');

если я запускаю его на этом выборе:

arg1, arg2

фрагмент должен выводить

doFunc('arg1', arg2);

Я не могу понять, как использовать null строка, если соответствие регулярному выражению не найдено. Это то, что я до сих пор:

 doFunc('${SELECTION/([^,]+)(,.*)?/\1/}', ${SELECTION/([^,]+)(,.*)?/\2/});

Так что проблема здесь ${SELECTION/([^,]+)(,.*)?/\2/} Я хочу сделать как высшее, так как \2 ? \2 : null Это возможно?

Спасибо

1 ответ

Решение

Sublime Text Snippets использует библиотеку Boost, которая фактически поддерживает троичные операторы в части форматирования. Следовательно, вы можете просто написать (?{2}(\2):'null') как троичный оператор.

Если вы измените свой фрагмент на этот, он будет иметь указанное поведение:

doFunc(${SELECTION/^([^,]+)(?:,\s*(.*))?/'\1', (?{2}(\2):'null')/});
Другие вопросы по тегам