mrmagooey / extempore-docs-website

The extempore documentation website
0 stars 0 forks source link

Extempore Docs Website

Introduction

This is the documentation website for the extempore programming system.

This documentation is only as up to date as the xtmdoc.json file that is included in this repository.

Usage

Use your favourite webserver and serve the root directory of this repository, easy options include:

// python 2
python -m SimpleHTTPServer 8000

// python 3
python3 -m http.server

// node 
live-server

Point your browser to the index.html.

Category Reference

This documentation set tracks several categories of Extempore language items.

Category Description Args? Type? Docstring?
builtin Defined within the compiler
polymorphic closure A closure that can defer to multiple underlying closures, depending on the types of the passed arguments. The result of a bind-poly call. ✓ (one type for each underlying function) ✓ (one for the poly version, and links to the poly'd over functions)
closure A function that has closed over its environment variables. The result of a bind-func call.
named type A named data structure. The result of a bind-type call.
type alias A alternate name for a type. The result of a bind-alias call. x
generic closure A closure that does type inferencing at compile time, choosing type depending on the passed arguments. Result of bind-func call with `!var` generic variables.
global var A mutable globally available variable. Result of bind-val call. x
C functions Functions from C libraries that have been imported either through the clang compiler or from manually imported libraries. Result of sys:load-dylib and bind-lib calls.

Development

Dependencies

Unless you are developing this package further you don't need the dependencies, the repository keeps the website in a working state.

Install npm dependencies with (assuming you have npm installed):

npm install

There are some packages that are normally installed globally (i.e. installed with -g flag):

bower
grunt-cli
live-server

...but you can also run these from from the node_modules directory, like:

node node_modules/live-server/live-server.js

Install bower dependencies with:

//global
bower install

//or local
node_modules/bower/bin/bower install

Grunt

The default grunt task:

//global
grunt

//local 
node_modules/grunt-cli/grunt

...will regenerate the necessary js and css files from source.

The watch task will watch source files and recompile as they change, but not for third party libraries. Third party libraries are manually specified in the Gruntfile and are regenerated by the default task.

Updating xtmdoc.json

Start an extempore session and run:

(xtmdoc-export-caches-to-json "/whatever/directory/you/want/xtmdoc.json")

This will generate a new xtmdoc.json file. Without including preceeding directory it will generate in the extempore install directory.