How to use Live Templates functions in File Templates?

Answered

Hi!

Is it possible to use Live Templates functions such as capitalizeAndUnderscore and similar in File Templates with "Enable Live Templates" on?

I can't figure out what syntax should I use, none is working:

const React = require('react');

const CN_#[[capitalizeAndUnderscore($NAME)]]# = '#[[decapitalize($NAME)]]#';

export default class $NAME extends React.Component {
render() {
return (
<section className={`${this.props.className} #{CN_#[[capitalizeAndUnderscore($NAME)]]#}`}>
#[[$END$]]#
</section>
);
}
}

Thanks

5 comments
Comment actions Permalink

No, it's not possible to use Live Template functions there.

But File Templates use Apache Velocity template language (http://velocity.apache.org/), so you can use standard java String functions there - see http://stackoverflow.com/questions/6998412/velocity-string-function, for example. Like:

#set( $regex = "([a-z])([A-Z]+)")
#set( $replacement = "$1_$2")
#set( $toSnake = $NAME.replaceAll($regex, $replacement).toUpperCase())
#set( $toLower = $NAME.toLowerCase())

const React = require('react');

const CN_$toSnake = '$toLower';

export default class $NAME extends React.Component {
 render() {
 return (
 <section className={`${this.props.className} #{CN_$toSnake}`}>
 #[[$END$]]#
 </section>
 );
 }
}

 

4
Comment actions Permalink

Thanks! This solves the problem

0
Comment actions Permalink

Hi!

https://www.jetbrains.com/help/phpstorm/2016.3/file-and-code-templates-2.html#live_template

I can use only predefined (END and SELECTION) variables?
Still can't use the live template functions?
How can I include seconds of time in my file template?

Thanks

0
Comment actions Permalink

Thank you!

0

Please sign in to leave a comment.