Dynamic filename-based names in JS snippets (using UltiSnips)
# Use the basename (of the file in which the snippet is invoked) as a sensible
# default for module names. Supports JSX files as well.
global !p
def module_name(name=None):
name = name or 'ModuleName'
s1 = re.sub('\.js(x?)$', '', name)
return ''.join(x.title() for x in re.sub('([A-Z])', r'_\1', s1).split('_'))
endglobal
# Usage:
# In file myCleverApp.js, expands to `module.exports = MyCleverApp;`
snippet me "module.exports" b
module.exports = ${1:`!p snip.rv = module_name(snip.basename)`};$0
endsnippet