Main article(s): Vercengen Documentation, Vercengen TODO
Vercengen/Verkengen (from Benerian, verc/verk [work] + engen [engine, to generate]) is a frontend software engine designed to unify all dynamic frontend tasks into a single JSON5-class based DSL or architecture.
It is as meant as an overhaul and replacement to UF/BrowserUI, and will be developed on the Naissance platform with UI/functionality class inheritance, draggable/resizeable window/pane management, graphs and statistical visualisation, nested context menus, nested tooltips, hierarchies, dynamic localisation, all in JSON5 only. Classes may have backend/non-UI processes attached to them for other tasks.
For the purposes of documentation, both JSON5/JSOL will be called JSON, even if it is not semantically correct. Additionally, Vercengen can be documented as a single JSON file with multiple types of Objects due to how it works. JS bindings are documented separately.
At the core of Vercengen are the concept of nested Classes, whose JSON structure serves to define what a class can do, how it inherits, and how it should render (if at all). Inheritance is cascading, so individual UI portions in .interface
may be optioned out or overridden without changing the entire class's boilerplate. Essentially, UIs are bound to Classes, with inline UI scripting.
Ideally, Classes would be stored in a main
state, with the .namespace
for each class allowing for instances to be stored and bound to a specific variable within main
. Classes can have multiple namespaces. In addition to this, .effect
JSON code may feature embedded JS files to allow for the breakup of UI files into multiple pieces.
Global Scripting is primarily used to define the application's startup load order. This is done by specifying recursive load orders with a staged startup function if need be.
Localisation is used for multilingual support, as well as more importantly to support variable formatting and value resolution. This is done by having variables at three different scopes: Global, Class, and Local/Instance. Note here that Class variables are accessible to all members of that Class, and can be used for line items such as optioning or changing Class behaviour. They are additionally accessible to all other Classes merely by invoking the name of that Class first.
Vercengen should come with a package manager, as should all Confoederatio projects for keeping internal dependencies updated. Landeter will serve as the main package manager across varying projects, pulling from central Git repositories upon request. It will also sync the current four versions of Universal Framework together - namely Browser, Electron, Node.js, and Nashorn.