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

Я пытаюсь создать фрагмент кода VS, который очищает пространство имен на основе текущей папки в проекте.

Текущий путь, предоставляемый переменной TM_DIRECTORY, может выглядеть примерно так:

/Users/bernhardrichter/GitHub/heatkeeper2000/src/HeatKeeper.Server/Mapping

В итоге я бы хотел получить namespace HeatKeeper.Server.Mapping, основываясь на том, что моя корневая исходная папка src

Так что мне нужно удалить все до и включая src, чтобы у нас остался HeatKeeper.Server/Mapping. И тогда мне нужно заменить (преобразовать) / в . так, чтобы конечный результат был HeatKeeper.Server.Mapping.

Возможно ли сделать это в одном преобразовании? Если нет, то возможно ли иметь несколько преобразований?

Это то, что я имею до сих пор

"namespace ${TM_DIRECTORY/(.*src.)(.*).*$/$2/}"

Это выводит namespace HeatKeeper.Server/Mapping, что почти то, что я хочу. Мне просто нужно заменить все / на .

Проблема в том, что я не знаю, куда поместить это преобразование.

Преобразование выглядит следующим образом.

"${TM_DIRECTORY/[\\/]/./g}"

, что дает мне

.Users.bernhardrichter.GitHub.heatkeeper2000.src.HeatKeeper.Server.Mapping

Я просто не знаю, как объединить эти два?

1 Ответ

0 голосов
/ 12 января 2019

Да, вы можете сделать их в одном фрагменте, вам просто нужно отдельно захватить две директории после src. Попробуйте:

  "namespace ${TM_DIRECTORY/.*src\\/(.*)\\/(.*)$/$1.$2/}",

Затем поместите period между двумя группами захвата. Это регулярное выражение предполагает, что у вас всегда есть каталог src, предшествующий двум нужным каталогам. Если это не так, будет работать захват двух последних каталогов:

  "namespace ${TM_DIRECTORY/.*\\/(.*)\\/(.*)$/$1.$2/}",

Обратите внимание, что разделители пути "/" должны быть дважды экранированы.

...