mexna
Mexna is string interpolator with simple signature but pretty specific abilities.
Main syntax is: mexna(string, [options])
.
Mexna can:
- interpolate into string data in case of simple object with keys to interpolate,
- use translations instead of values of keys as is,
- use default values for keys right in string with simple and flexible syntax,
- use values of interpolants as a valid JSON with will be parsed and injected to string,
- interpolate data strucures as strings with
JSON.stringify
, - expose out interpolants from quotes in strings,
- non-valid JSON as default values will be interpolated as strings.
Options
keys [Object]
- keys for interpolation, each key should be astring
i18n [Object]
- translations keystranslate [Boolean]
- flag to use translations instead of valueexposeOut [Boolean]
- flag to pick up value from string and return parsed JSON (look up)delimeter
- string which is delimeter in interpolant's expression (||
by default)regex
- regular expression to match. Must have one group containingkey
and optionalydefault
values for keysstrict
- throws exceptions for unknown keys in the strict mode. Defaultsfalse
ternaryRegex
- regex to match ternaty expressions in string
Usage
Simple string interpolation
You can give your own regex to match interpolants with regex
option. By default it equals to /${(.+?)}/g
, which matches to expressions kinda ${thisIs}
:
; // -> Jack and Jill sit on tree
Interpolate translations instead of key values as is
Use translate
option:
; // -> А вот и первый, и второй
or just put empty keys
and use default values for interpolants:
; // -> А вот и первый, и второй
Use defaults (strings)
Moreover flexible matching syntax, you can use your own delimeter
option to define syntax for default values, by default it equals to ||
string. Which looks like: ${key || default}
. You can use valid JSON in defaults, if default value is non-valid JSON then it interpolates as string
// -> Every 12 days we playing
Interpolate JSON
You can interpolate valid JSON into your text:
; // -> Zomg teh JSON: {"a":{"the":1},"b":["a","r","r","a","y"]}
or as defaults:
// -> 'The default: {a: [1,2,3], b: {c: 10} }'
Exposing
Sometimes there is a need to replace string representation into some other data type inside of given string. For example:
In string: '{"period": "${preset || 30days}"}' (which is a part of stringified JSON) we want to pick interpolated value
presetout of quotes:
'{"period": ["2015-12-01","2015-12-02"]}'. Mexna can do it. You need to use
exposeOut` option:
; // -> {"period": ["2015-12-01","2015-12-02"]}
Or with default
; // -> {"period": ["2015-12-01","2015-12-02"]}
Ternatry expressions
In v0.2.* mexna support ternary expressions in strings:
// -> 'I am a ternary str' // -> 'I am a ternary default'