data and template interface

gearsix 802cafa6d4 template: changes 'hmpl' extension to 'htmpl' 11 months ago
cmd e0ca51e79c minor improvements, better variable names, updated LICENSE dates, etc 1 year ago
examples 9e9f19905a v1 changes; removed DEPRECIATED code and a few fixes 1 year ago
CHANGELOG.md 26fe1b7de4 TODO & CHANGELOG updates 1 year ago
LICENSE a4fdfd4c88 added GPLv3 license; added mustache support 3 years ago
README.md d85964737a formatting changes to README.md; added TODO items 1 year ago
TODO.md 26fe1b7de4 TODO & CHANGELOG updates 1 year ago
data.go 73c48d3982 data.go, test.go: minor fixes 1 year ago
data_test.go d3d0fb4b24 data_test.go: fixed failing test 1 year ago
file.go e0ca51e79c minor improvements, better variable names, updated LICENSE dates, etc 1 year ago
file_test.go e0ca51e79c minor improvements, better variable names, updated LICENSE dates, etc 1 year ago
go.mod 912752f46b REBRAND to 'dati - data and template interface' 2 years ago
go.sum bb46d788e3 go.sum update 3 years ago
template.go 802cafa6d4 template: changes 'hmpl' extension to 'htmpl' 11 months ago
template_test.go 802cafa6d4 template: changes 'hmpl' extension to 'htmpl' 11 months ago

README.md

dati

data and template interface

USAGE

dati [OPTIONS]

DESCRIPTION

dati aims to provide a universal interface for executing data files, written in any data-serialization language, against template files, written in any templating languages. Ideally dati will support any language you want to use.

dati works by using various libraries that do all the hard work to parse data and template files passed to it. It generates a data structure of all the passed data files combined (a super-data structure) and executes that structure against a set of root template files. The used libraries are listed below for credit/reference.

dati can also be imported as a golang package to be used as a library.

OPTIONS

  • -r, -root PATH
    Path of the root template file to execute against.

  • -p, -partial PATH ...
    Path of (multiple) template files that are called upon by at least one root template

    • If a directory is passed then all files within that directory will (recursively) be loaded.
  • -gd, -global-data PATH ...
    Path of (multiple) data files to load as "global data". If a directory is passed then all files within that directory will (recursively) be loaded.

  • -dk, -data-key NAME
    Set the name of the key used for the generated array of data. The default data key is "data".

  • -sd, -sort-data ATTRIBUTE
    The file attribute to order data files by. If no value is provided, the data will be provided in the order it's loaded.

    • Accepted values: "filename", "modified".
    • A suffix can be appended to each value to set the sort order: "-asc" (for ascending), "-desc" (for descending). If not specified, this defaults to "-asc".
  • -cfg -config FILE
    A data file to provide default values for the above options (CONFIG).

CONFIG

It's possible you'll want to set the same options if you run dati multiple times for the same project. This can be done by creating a file (written as a data file) and passing the filepath to the -cfg argument.

The key names for the options set in the config file must match the name of the argument option to set (long or short). For example (a config file in toml):

root="~/templates/blog.mst"
partial="~/templates/blog/"
gd="./blog.json"
data="./posts/"
dk="posts"

DATA

dati generates a single super-structure of all the data files passed to it. This super-structure is executed against each "root" template.

The super-structure generated by dati will only have 1 definite key: "data" (or the value of the "data-key" option). This key will overwrite any "global data" keys in the root of the super-structure. Its value will be an array, where each element is the resulting data structure of each parsed "data" file.

Parsed "global data" will be written to the root of the super-structure and into the root of each "data" array object. If a key within one of these objects conflicts with one of the "global data" keys, then that "global data" key will not be written to the object.

TEMPLATES

All "root" template files passed to dati that have a file extension matching one of the supported templating languages will be parsed and executed against the super-structure generated by dati.

All "parital" templates will be parsed into any "root" templates that have a file extension that match the same templating language.

SUPPORTED FORMATS / LANGUAGES

Below is a list of the supported data-serialisation languages, used for "data" and "global data" files.

These are the currently supported templating languages, used for files passed in the "root" and "partial" arguments.

EXAMPLES

dati -cfg ./dati.cfg -r templates/textfile.mst

dati -r homepage.hmpl -p head.hmpl -p body.hmpl -gd meta.json -d posts/*

see the examples/ directory in the dati repository for a cool example.

LIBRARIES

As stated above, all of these libraries do the hard work, dati just combines it all together - so thanks to the authors. Also here for reference.

  • The Go standard library is used for parsing JSON, .tmpl/.gotmpl, .hmpl/.gohmpl
  • github.com/pelletier/go-toml
  • gopkg.in/yaml.v3
  • github.com/cbroglie/mustache

AUTHORS