Creating a separate topic so this doesn't get lost / bogged down in Cassie's Functions and Other Useful Tips from a Pro In that thread, Cassie suggested using Pug, but some concern was raised about the barrier of entry that might represent. I'd like to suggest Handlebars as an alternative for consideration. At the most basic level, the "each" block can help cut down on a sequence of essentially copy-paste code with minor changes. index.handlebars <div class="list">
{{#each items}}
<div class="item">{{this}}</div>
{{/each}}
</div> data.json ["item1","item2","item3"] Yields the complete HTML: <div class="list">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
</div> I created a basic command line interface to be able to generate a file from templates and a data.json without having to get into any scripting. A complete example can be found here: <a href="https://github.com/PrimalZed/handlebars-poc" rel="nofollow">https://github.com/PrimalZed/handlebars-poc</a> UPDATE 2020-04-04: I created a GUI to generate a file from templates and a data.json without having to install anything or use a CLI: <a href="https://github.com/PrimalZed/character-sheet-generator/releases/tag/v0.1.0-beta" rel="nofollow">https://github.com/PrimalZed/character-sheet-generator/releases/tag/v0.1.0-beta</a> Pros: Looks like HTML (or whatever file type you're templating), with handlebars blocks added in Inject data values anywhere directly into the HTML Can yield benefit with little effort - sheet authors can use as much or as little as they want Handlebars blocks have opening and close tags similar to HTML Easy to add new templates for re-use and organization Cons: Involves new syntax to learn and helpers to understand Built-In Helpers For advanced use: Additional Helpers For advanced use: Repeat Helper Requires Node.js installation and some command lines (now with GUI) What do you guys think? Would this be worth pursuing? I can build a boilerplate example to help others start using this on their own sheets. If this catches on, I can help contribute to a wiki page with more examples and explanation (although I won't claim to be a good teacher).