Building code processing data structures
Computing has advanced tremendously thank to new open and interoperable tools and programming languages.
Computing handles data structures and is itself described by data.
A program source is a human friendly representation of an Abstract Syntax Tree, a data structure that represents the computations of the program.
Wizzi is a new tool for describing, composing and processing data structures in the form of both declarative and imperative code.
It is aimed at those development tasks where programming can be driven by data.
Design code as data
In Wizzi human friendly representations of tree data structures drive data transformations and code generations.
To wizzify code promotes the design of code as a reusable data structure.
Wizzify sources
Wizzi sources are human readable streams named ITTF Documents.
ITTF stands for Indented Text Tree Format, a tree data structure where nodes are name/value pairs.
Wizzified code is templatable and computable.
Apply templates
ITTF Documents can include and merge other ITTF Documents. Are templates that can be merged with context data. Can be scripted.
The ITTF Processor is a script and template engine that transforms source streams into mTree objects.
Apply schematas
After composition, domain specific schematas can be applied to mTrees, creating dynamic models that become context objects for code generations or in cascade new data compositions.
Automate generations
Ittf Processing and code generations can be automated chaining tasks in Wizzi Jobs.
A Wizzi Job is the task runner of Wizzi.
Developing in a connected world
Nowadays programming is migrating to the cloud.
Wizzi is designed to operate in the browser and to use cloud Git repositories as data sources and destinations.
Web Hooks an CI Tools may integrate Wizzi in a cloud development environment.
The Browser is the IDE
Wizzi adopts BrowserFS to use the browser as a file system.
Git is the code DB
Wizzi uses isomorphic-git, an in-browser Git API, to manage source documents in the cloud.
Web Hooks and CI
Generated artifacts commited to a Git Repository can be immediately integrated thanks to Web Hooks and Continuous integration tools.
Main components
Wizzi is a javascript application designed to run in the browser and on NodeJs servers.
Its main components process sources that may target any programming language or any other printable text format.
User created schemata, transformers and generators target domain specific outputs.
Ittf Documents
Wizzi source documents.
Represent code and any textual data format as a tree data structure.
Composable, templeatable, scriptable.
Wizzi Schemas
Formal descriptions of data structures, similar to XML Schemas.
Describe and generate Wizzi Model Doms that load and validate ITTF Documents.
Wizzi Models
Instances of Wizzi Model Doms loaded with processed ITTF Documents.
Act as context objects in artifact generations and ITTF processings.
Wizzi Factory
The main API component of Wizzi.
Loads plugins, processes sources, execute generations, run jobs.
A pluggable architecture
Wizzi is made of general purpose kernel modules and an ecosystem of domain specific plugins.
Plugins are the horse work of code generations.
Core and default plugins support the creation of user generated plugins.
Core plugins
The ` wizzi-core ` plugin contains schemata and artifacts used by the kernel modules.
Npm plugins
Plugin authors can contribute their plugins to the community packaging and publishing them to the Npm registry.
Public Wizzi plugins should be prefixed with 'wizzi-plugin-'.
Local plugins
User generated plugins can be declared by path to the Wizzi factory and may remain locals to user projects.