Space-Case-Templates
easy string templates
note: everything here is subject to change. eventually the plug wrappers will support inline javascript RegExp which will make templating more expressive and standardized.
Example Usage
Bring the Templator class into your project:
#!/usr/bin/env node let Templater = Templater; let t = ;
Create a few plugs -- varaibles that you will use to hydrate your template:
let plugs = 'classname': 'Baked Potato' 'anotherClassname': 'bacon service.test blah.blah-blah_blah'
Create your template:
let template = ` no spaces: ~classname~ with spaces: ~anotherClassname ~ hyphenated: ~anotherClassname-~ hpyhenated + lowercase: ~anotherClassname-\\~ underscore-separated upper case: ~anotherClassname_/~ upper case preserve spacing ~anotherClassname! /~ no spaces uppercase: ~anotherClassname/~ capitalize first: ~anotherClassname^~ camel case: ~anotherClassname^^~ pascal case: ~anotherClassname^^^~ this var doesn't exist: ~yetAnotherClassname~`;
See what it does:
console;
output:
no spaces: BakedPotato with spaces: bacon service test blah blah blah blah hyphenated: bacon-service-test-blah-blah-blah-blah hpyhenated + lowercase: bacon-service-test-blah-blah-blah-blah underscore-separated upper case: BACON_SERVICE_TEST_BLAH_BLAH_BLAH_BLAH upper case preserve spacing BACON SERVICE.TEST BLAH.BLAH-BLAH_BLAH no spaces uppercase: BACONSERVICETESTBLAHBLAHBLAHBLAH capitalize first: Baconservicetestblahblahblahblah camel case: baconServiceTestBlahBlahBlahBlah pascal case: BaconServiceTestBlahBlahBlahBlah this var doesn't exist: ~yetAnotherClassname~
Explanation
Each variable reference in the template is has a wrapper: '~' e.g.: ~myVariable~
The variable reference can specify a case modifier immediately before the end of the wrapper:
case | modifier | example reference |
---|---|---|
all uppercase | / | ~myVar/~ |
all lowercase | \ | ~myVar\~ |
capitalize first | ^ | ~myVar^~ |
camel case | ^^ | ~myVar^^~ |
pascal case | ^^^ | ~myVar^^^~ |
A space modifier may be inserted before the case modifier.
Space modofiers replace the symbols in the following RegExp: /[\s.,_-]/g
Except forthe 'preserve spacing'space modifier, each modifer replaces all of the matches to the above RegExp with the symbol modifier:
Review the example usage above and it should make sense.
symbol | description |
---|---|
' ' | space |
'.' | dot |
',' | comma |
'_' | underscore |
'-' | dash |
'! ' | preserve spacing |
if a space modifier is not provided all spaces will be removed from the variable
so if the value of ~myval~ is 'this is my var', then the text inserted in the template will be 'thisismyvar'.
to keep spacing in the above variable you'd say ~myval! ~. (the preserve spacing symbol).