Replace a tag with content in a configurable way
Install with npm:
$ npm install --save tag2content
// ES6
import tag2content from 'tag2content';
// CommonJS
const tag2content = require('tag2content').default;
Create a text, in which you define some tags:
const text = 'I would like to go to [country] next year, with my friend [friend-name].';
Create a configuration for you tags:
const tags = {
country: () => 'Japan',
'friend-name': () => 'Joe',
};
Replace tags with their content:
const updatedText = tag2content({
tags,
text,
});
console.log(updatedText) //=> 'I would like to go to Japan next year, with my friend Joe.';
You can add some variables to your tags:
const text = 'I go to [country name="England"] next year, with [friend name="Lucy" to-uppercase="true"].';
When you defines a function for each tag, variables are passed as argument. Kebab case variables are transformed to Pascal case ("to-uppercase" becomes "toUppercase").
const tags = {
country: variables => {
return variables.name;
},
friend: ({ name, toUppercase }) => {
return toUppercase ? name.toUpperCase() : name;
}
};
You can use custom delimiters:
const text = 'My first name is {first-name value="Robin"}.';
const tags = {
'first-name': ({ value }) => value,
};
const updatedText = tag2content({
delimiters: {
end: '}',
start: '{',
},
tags,
text,
});
console.log(updatedText) //=> 'My first name is Robin.';