kung-fig
v0.67.4
Published
The Kung Fu of configuration files!
Downloads
1,084
Maintainers
Readme
Kung-Fig
The Kung Fu of configuration files!
Kung-Fig is a wonderful file format named KFG, its parser, its stringifier, and a set of great tools.
It is great for:
- Configuration files
- Hierarchical configuration files
- Global/local and vanilla/plugins override and extension management
- Application data
- Saving user prefs in a human-friendly format
- Building scripting language on top of it
- Game characters, weapons, armors, spells, stats, bonuses, etc
- Internationalization/localization
- ... and many more
Now, look at this impressive list of features:
- Human friendly data structure representation (similar to YAML, but potentially better)
- Comments support
- Multi-line strings support, with or without newline folding
- Sections
- Nice Map and dictionnary syntax
- Classes/Constructors (date, binary data, regular expression, and custom constructors!)
- Including files (.kfg, .json, .js, .txt, etc), featuring globs and recursive parent search
- Relational data representation support
- Meta-tags (headers)
- Tags (to build scripting language on top of KFG)
- References (i.e. referencing a part of the document from elsewhere)
- Template strings and internationalization/localization
- Expressions (arithmetic, logic, maths, etc)
- Tree operations syntax (merge, combine, etc)
- ... and many more!
Official support of the Atom editor:
- KFG and Spellcast! language package
- Syntax theme dedicated to KFG and Spellcast! (more suitable colors, and it colorizes specific KFG scopes)
A KFG Primer
Example of simple document:
# This is a comment!
# Set few properties:
first-name: Joe
last-name: Doe
age: 47
# This property contains an array:
interest:
- science
- literature
- computer
# Use the special 'date' constructor:
birth-date: <date> Fri Jan 02 1970 11:17:36 GMT+0100 (CET)
# This include a file
items: @@path/to/file/items.kfg
Example featuring tags, suitable for for scripting (here Spellcast Scripting):
# Meta-tags (like headers)
[[doctype spellcast/story]]
[[locales locales/*]]
# Tags
[chapter story]
[scene intro]
[image] village.png
[music] intro-theme.ogg
[message]
$> Once upon a time, there was a ${character.class}...
[next end]
[scene end]
[image] castle.png
[music] ending-theme.ogg
[message]
$> You found the master and learn everything he taught to you.
$> You became famous in the entire country.
[win]