У меня есть несколько настроенных фрагментов, которые работают так, как я хотел бы, но мне сложно заставить работать один фрагмент, когда, как я полагаю, мне потребуется выполнить несколько преобразований?
По сути, у меня есть интерфейс TypeScript, определенный для одного из моих компонентов.
то есть IRadioButtonListProps.ts, который находится внутри папки Interfaces. Папка Interfaces имеет родственную папку с именем Theme, содержащую интерфейс с именем IRadioButtonListTheme.ts.
Внутри IRadioButtonListProps пытаюсь заглушить весь интерфейс. Фрагмент, который у меня сейчас есть, прерывает интерфейс вроде ...
import * as React from 'react';
import IRadioButtonListPropsTheme from '../Theme/IRadioButtonListPropsTheme';
export interface IRadioButtonListPropsProps {
...props...
}
export default IRadioButtonListPropsProps;
Строка импорта внутри фрагмента ...
"import I${TM_FILENAME_BASE/(.*)\\..+$/$1/}Props from './Interfaces/I${TM_FILENAME_BASE/(.*)\\..+$/$1/}Props';"
Что я пытаюсь сделать и не могу понять, так это как убрать слово «Props». Так что вместо import IRadioButtonListPropsTheme... я бы получил импортный import IRadioButtonListTheme....
В то же время я хочу удалить все расширения, включая расширения формы * .abc.abc («два» расширения) и * .abc (одно простое расширение).
Это возможно?
Попробуйте сменить (.*)\\..+$ на (.*?)(?:Props)?\\.[^.]+$
Это не сломалось, как то, что я пытался сделать, но это также не повлияло на результат.





Непонятно, что вы делаете, но попробуйте:
"import ${TM_FILENAME/((\\w*)Props)*?(\\..*)/$2/}Theme from './Interfaces/${TM_FILENAME/((\\w*)Props)*?(\\..*)/$2/}Theme';"
что приводит к:
import IRadioButtonListTheme from './Interfaces/IRadioButtonListTheme';
из IRadioButtonListProps.ts
а также
import CheckboxListTheme from './Interfaces/CheckboxListTheme';
из CheckboxListProps.test.tsx
[Редактировать] Вот более простая версия, которая, я думаю, тоже работает:
"import ${TM_FILENAME/(Props)*?(\\..*)//}Theme from './Interfaces/${TM_FILENAME/(Props)*?(\\..*)//}Theme';"
Это удалило слово Props, но перестало гарантировать отсутствие расширения. Некоторые из фрагментов используются в тестовых файлах, названных аналогично CheckboxList.test.tsx. Я использовал TM_FILENAME_BASE для удаления .tsx, а затем существующее преобразование для удаления .test
Итак, одно из ваших намерений - удалить все, что находится после первого включительно. (точка)? Что должен производить фрагмент на CheckboxList.test.tsx для оператора импорта?
CheckboxList.test.tsx и CheckboxListProps.test.tsx оба должны продуцировать CheckboxList (что касается преобразования).
Я отредактировал ответ выше, чтобы также рассмотреть ваши сценарии с несколькими расширениями.
Есть ли шанс, что вы могли бы включить преобразование, чтобы захватить последний каталог в пути, созданном TM_DIRECTORY? то есть c:\a\b\c\d\e будет производить e
Да, но в духе SO, вы должны опубликовать это как новый вопрос.
сделано stackoverflow.com/questions/52877815/…
С чем должен соответствовать
(.*)\\..+$?