나는 TeaCode를 사용하는데, TeaCode에는TeaCode 언어이며 템플릿 텍스트에 다음과 같은 정의가 있습니다.
md5 converts text into MD5 hash value
uppercase makes all the letters UPPERCASE
capitalize Converts First Letter Of Each Word To Uppercase
camelcase converts text to camelCase
snakecase converts text to snake_case
dashcase converts text to dash-case
lowercase makes all the letters lowercase
sha1 converts text into SHA1 hash value
pascalcase converts text to PascalCase
remove_spaces removesallthespaces
lcfirst makes the first letter lowercase
ucfirst makes the last letter uppercase
예를 들어:
For pattern vc ${name:word}, the template is:
class ${name.capitalize}ViewController: NSViewController {
#
}
즉 vc main
, 사용자가 input 을 입력하면 출력 코드는 다음과 같습니다.
class MainViewController: NSViewController {
|
}
그래서 내가 원하는 결과는 다음과 같습니다.
입력: 템플릿 변수로 대체할 단어입니다.
출력: 템플릿 텍스트가 대체되었습니다.
예시 1:
텍스트 입력:
class MainViewController: NSViewController {
// this is main text
// this is maintain
// this is Maintain
// this is Main text
}
입력하다:
main
출력 텍스트:
class ${main.capitalize}Controller: NSViewController {
// this is ${main} text
// this is maintain
// this is Maintain
// this is ${main.capitalize} text
}
참고: main은maintain과 같은 단어로만 바꿀 수 있습니다. main은 단어가 아닙니다.
답변1
내가 올바르게 이해했다면 다음을 시도해 볼 수 있습니다 sed
.
예:
class FooViewController: NSViewController {
// this is foo text
// this is foobar
// this is Foobar
// this is Foo text
// foo
// Foo
// BarFoo
// barfoo
}
word="foo"
주문하다:
sed -e "s/^class .*Controller/class \${$word.capitalize}Controller/" -e "s/\( \|$\)$word\( \|$\)/\1\${$word}\2/" -e "s/\( \|^\)${word^}\( \|$\)/\1\${$word.capitalize}\2/" file
산출:
class ${foo.capitalize}Controller {
// this is ${foo} text
// this is foobar
// this is Foobar
// this is ${foo.capitalize} text
// ${foo}
// ${foo.capitalize}
// BarFoo
// barfoo
}