Сниппеты WebStorm (Live Template). Как использовать название папки, а не файла

Создаю сниппет для React в Webstorm (там они называются Live Templates), для того чтобы при вводе, например, tsc и нажатии на клавишу tab создавалась такая структура

import React, { FC } from 'react'
import * as s from './styled'

interface Props {
 
};

const SomeComponent: FC<Props> = (props) => {
 return (
  <s.Container>
   
  </s.Container>
 )
}

export default SomeComponent

Так как в настройке сниппета используется $TM_FILENAME_BASE$, то название компонента берётся по названию файла. Т.е. если мы создали файл some-component, и в нём воспользуемся сниппетом, то имя функции будет SomeComponent.

Но проблема сейчас в том, что по структуре у меня идёт папка с названием компонента, а в нём файл index.tsx

Т.е.
не src > components > some-component.tsx
а src > components > some-component > index.tsx

И поэтому название функции ставится Index

Как настроить сниппет, чтобы он название функции делал по названию папки, а не по названию файла?

Мой текущий код сниппета:

import React, { FC } from 'react'
import * as s from './styled'

interface Props {
 $END$
};

const $TM_FILENAME_BASE$: FC<Props> = (props) => {
 return (
  <s.Container>
   
  </s.Container>
 )
}

export default $TM_FILENAME_BASE$

Ответы (1 шт):

Автор решения: lena

я бы предложила изменить expression для переменной $TM_FILENAME_BASE$ на capitalize(camelCase(regularExpression(filePath(), ".*\\\\(.*)\\\\[a-z]*.[a-z]*", "$1"))); groovyScript из ответа в комментарии не работает в WebStorm

→ Ссылка