EnCAB is composed of two parts: an executable program and a website. The executable program takes input files, containing the data needed to create and format the algorithms, and uses that data to create interactive fields and links. Those algorithms are then grouped on several static HTML pages according to attributes, such as the 'position in process' of the individual algorithm, or the material used. These HTML files form part of a website which contains an array of HTML pages giving descriptions for the elements used to describe the algorithms, such as the units used or the source chronology.
For each algorithm there is one input file containing the information needed to create and describe the algorithm to be placed in the HTML files. The input format used is XML, and there are plans to include JSON as an input format as well (see Future Plans below). A template for the XML input can be found in the documentation.
The executable portion of EnCAB has been written in Python 3.6 using:
* Jinja2 as the
templating engine
* ElementTree
to parse XML
* BeautifulSoup
to parse HTML
Details on how to run EnCAB can be found in the readme.md file in the GitHub repository.
EnCAB is Open Source available under the GNU-GPL 3.0 license (with the exception of the images), and is available as a GitHub repository. EnCAB versions are saved in Zenodo here, and the project has a DOI through Open Science Framework - see How to Cite for more on the DOI.
The executable program creates a log file of errors it finds when compiling the algorithms, checking, for example, that the descriptive HTML files referred to are present in the website.
The website is hosted on GitHub, while the domain name has been purchased through DirectNIC. One of the limitations of GitHub hosting is that dynamic pages are not allowed, resulting in the use of static pages as described above.
Contributions to EnCAB are more than welcome, for more information see the contribute page.
EnCAB is an ongoing project, and several ideas have yet to be implemented. For the moment the primary desiderata is the inclusion of JSON as possible input type, along with the XML already implemented. For a complete list of desiderata, to add something or to help improve the program, see the to-do file.