Skip to content

Jinja-like template engine written in C11. Main repo: https://git.yaroslavps.com/roscha/ ; srht repo https://git.sr.ht/~yaroslav/roscha

License

LGPL-2.1, Unknown licenses found

Licenses found

LGPL-2.1
LICENSE
Unknown
COPYING
Notifications You must be signed in to change notification settings

Yaroslav-95/roscha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

roscha

A jinja inspired template engine written in C11. Why would I do something like this? Because I needed a template engine I could use in C programs, and for the lulz, of course.

Probably not the best in terms of performance and especially features, but it gets the job done.

How to use

All the functions and structures that are needed to use roscha are in include/roscha.h, include/object.h, include/hmap.h, include/vector.h, and include/slice.h.

Basically you initialize roscha with roscha_init(), then create a new environment where all the templates and variables will be with roscha_env_new() add some templates, e.g. you can load them from a dir with the roscha_env_load_dir(env, dir) function, add some variables to env->vars hashmap and render a template running roscha_env_render(env, template_name).

All variables used inside roscha are wrapped around a reference counted structure called roscha_object that also contains the type information needed by roscha. You should increment and decrement the reference count appropriately using the functions roscha_object_ref(object) and roscha_object_unref(object) accordingly.

After using roscha you should free everything related to roscha by decrementing the reference counts, destroying the struct roscha_env * environment, and calling roscha_deinit().

TODO

  • Better document this... or not if nobody else uses?
  • Probably fix some bugs that are currently hidden.
  • k, v arguments in for...in loops over hashmaps
  • make hashmaps grow in capacity over a certain load threshold.
  • Other stuff like space trimming

About

Jinja-like template engine written in C11. Main repo: https://git.yaroslavps.com/roscha/ ; srht repo https://git.sr.ht/~yaroslav/roscha

Resources

License

LGPL-2.1, Unknown licenses found

Licenses found

LGPL-2.1
LICENSE
Unknown
COPYING

Stars

Watchers

Forks