smt
8/19/2015 - 9:36 PM

Dynamic filename-based names in JS snippets (using UltiSnips)

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