rna

0.1.3 • Public • Published

RNA

RNA is a template/model based code generator.

It takes mustash templates and json models to generate code.

Usage:

Usage: rna [--dir working_directory] <model> <template> [output]
       rna [--dir working_directory] <rna_config_file>

model:
    supported formats:
        - json

template:
    supported formats:
        - handlebars template

rna_config_file:
    supported formats:
        - json
    possible objects:
        {
            model: <string>,
            template: <string>,
            output: <string>
        }
                                        or
        {
            RnaConf: {
                model: <string>,
                template: <string>,
                output: <string>
            }
        }

The advantage of using the second form is to be able tu have the same file for
the rna configuration and the model.

API

Template

You can use everything Handlebars has to offer.

Model

Your model must be a valid json object. (JSON.parse compliant).

There are two helpers available: $files and $custom.

$files

Example :

{
	"$files": {
		"matching": "*.coffee",
		"type": "file",
		"ignore": "index.coffee"
	}
}

Here, the configuration of the $files field will be replaced by a liste of matching files.

Configuration options :

{
	"$files": {
		"dir": ".",			"_": "base directory",
		"matching": "*.coffee",		"_": "only files matching *.coffee will be listed",
		"type": "file",			"_": "possible: file | dir (both if not specified)",
		"ignore": "index.coffee",	"_": "either a file name or a glob match",
		"contains": "filename",		"_": "directories containing a specific file (only with type=dir)"
	}
}

$custom

Shamefully not tested ...

configuration:

{
	"dir": ".",	"_": "base directory",
	"path": "./",	"_" : "import path",
	"data": {},	"_": "data to pass to the custom helper"
}

TODO

  • write tests
  • test $custom
  • create more default helpers
  • create gulp plugin

Package Sidebar

Install

npm i rna

Weekly Downloads

2

Version

0.1.3

License

MIT

Last publish

Collaborators

  • yazgazan