Usage

Sitix is a KISS program, so there's not a lot of setup. Once you've got it installed (see for information on that), you need a project to build. The simplest Sitix project structure is just a site folder, which contains the actual Sitix "scripts". When (you absolutely must be outside of the site directory to do this!) you run sitix site, Sitix will delete the output directory and all contents, if it exists, and then create a new output directory for the compiled site code. Then, Sitix will walk down the tree of your site directory, creating appropriate subdirectories and directly copying over any file that doesn't have an opening phrase - [!], for a Sitix page, or [?] for a data page (which will not be rendered itself, but may be used for templating or configuration). The opening phrase MUST be the first three bytes of the file; if there are any whitespaces before it, the file will be treated as plain data. If you want it to render to a different directory, pass the -o location flag.

Configuration can be managed with the -c command line directive, which directly inserts a Sitix object to the virtual root scope. For instance, this site uses the -c production argument to enable the production endpoint as opposed to the local development endpoint. It could also be something like -c endpoint https://swaous.asuscomm.com/sitix, directly inserting the endpoint.
WARNING: -o is very dangerous! If you tell Sitix to render to a directory with important information in it, that directory is as good as gone. At the moment Sitix does not put any effort into questioning your choices, so make sure to double-check everything is okay before running any sitix command! Avoiding -o unless you really need it is generally a good policy.
Let's cover some syntax. All Sitix commands are enclosed in brackets like [command] (you can escape brackets with backslashes). There aren't very many Sitix commands; at the moment, it's just: You can use Sitix commands in any file with a Sitix opening phrase; Sitix commands in files that do not have an opening phrase will be ignored.

There are a number of "special objects" that resolve magically at different places. The most useful two are __after__ and __before__, which crop up in for loops. They allow you to reference the object that came before or after, like [^i.__after__]. __this__ is pretty much useless except in very niche situations, because of the unclear rules behind it; I will document those on a later date. __file__ is always the root object of the current file, - you can most likely guess why that's useful.
Evals is a very simple stack-based language meant for evaluating string statements. When data is entered in the Evals program, it's immediately pushed to the stack (like "hello", 3.14, true, or some.sitix.variable). At the end of Evals rendering, whatever is left on the stack is considered the result (if there is more than one thing on the stack, Evals will give you a Bad Syntax error and return an ErrorObject). To manipulate data, there are a number of commands that work on the top of the stack: Truthyness in Evals is not dissimilar to JavaScript. Empty strings are falsey, and all other strings are truthy; 0 is falsey and all other numbers are truthy, and booleans are truthy or falsey based on their value. Sitix variables are considered truthy if the lookup is successful, and falsey otherwise; this allows for a replacement to the old [i exists] and [i config], like [i conf/prod] would check if the conf/prod variable exists in scope (which could be set by -c conf/prod, for instance). Evals will render Sitix variables as strings to run comparisons on them. This means you must be careful - if rendering that object would change a variable you don't want changed, for instance, you'll end up with some very odd behavior. Rendering objects to strings is also dangerous because of the sheer size of some Sitix objects - you can store many gigabytes of data safely in a PlainText object, which would be forced into main memory by an Evals comparison (Evals will not render Sitix objects unless they're used in a comparison with a string; comparing two Sitix objects is safe). Be careful.
And that's it! To see how these are used creatively in the wild, check out the source code for this website.
For a more thorough look at Sitix, check out the source code. There's a rather large comment at the start of main.cpp that provides a deep look at Sitix syntax and usage.
Sitix by Tyler Clarke
Shameless Plugs
Tyler Clarke's personal site
Tyler Clarke's (old) webcomic/blog/personal site
Fedora Linux
GNU
The Free Software Foundation
The Avraham Society (first site to be officially generated with Sitix)
The Not Art Gallery
Bacon Jam Tomato
Places in This Site
Home
About
Usage
Todo
Noteboard
Install Sitix
Information
Sitix (including this website) is open-source Free Software protected by GNU GPLv3. Looking to contribute? The source code for this website is hosted on Github, as is Sitix itself.
Sitix is still young and probably buggy; if you have issues, submit a bug report at the issues page or contact me at plupy44@gmail.com (github issue preferred).
If you want to contribute, but don't know where to start, see The Todo List.
Site designed by Tyler Clarke and built with Sitix. This page uses the Lato fonts.