0.1.4 • Published 3 years ago
ymlgen-cli v0.1.4
ymlgen
A generator for YML/YAML files
Features
- Generate one or many files from YML/YAML config file
- Async rendering supported
Requirements
- This extension only activates when YAML language is enabled
- Create
.ymlgen/generators
directory that locates workspace root directory - Create first generator file in the
generators
directory, a generator file must be javascript file (.js
) The generator might look like this:
const writeItem = ({ write, key, data }) => write(`<li>${key}:${data}</li>`); const writeSeparator = ({ write }) => write("<li>---</li>"); // using nodejs export style module.exports = async (context) => { const { data, write } = context; write("Something"); };
Create template file, a template file must be YML/YAML file
The template file must contain header, the header must follow the format below
# ymlgen: generatorName, *.fileExtension
Example:
/yourWorkspaceDir/.ymlgen/generators/list.js
const writeItem = ({ write, key, data }) => write(`<li>${key}:${data}</li>`);
const writeSeparator = ({ write }) => write("<li>---</li>");
// using nodejs export style
module.exports = async (context) => {
const {
// write text to output file
write,
// helper
$each,
// the data is parsed from YML file
data,
// for fetching remote data purpose
axios,
// for schema validation purpose
zod,
} = context;
// write string template
await write()`<ul>`;
await write(
// data is array now, using $each helper to renders all data items
$each(data, writeItem, { sep: writeSeparator })
);
// write simple value
await write("</ul>");
};
/yourWorkspaceDir/test/list.yml
# ymlgen: list, *.html
- item1
- item2
- item3
- item4
After saving the yml file, ymlgen
will create new file that locates in /yourWorkspaceDir/test/list.html
<ul>
<li>0:item1</li>
<li>---</li>
<li>1:item2</li>
<li>---</li>
<li>2:item3</li>
<li>---</li>
<li>3:item4</li>
</ul>