[!] [=title Usage] [=isSimple ] [=content-]
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.
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:

- `\[=variableName variableContent]`: This simply sets `variableName` to be equal to `variableContent` at that point on the scope tree.
- `\[=variablename-]variableContent\[/]`: The expanded form of above. This allows for much more complicated variables, including variables containing Sitix commands (in the compressed form, anything inside MUST be plaintext). It's generally preferred to use this when the content is more than a word or two.
- `\[^variableName]`: "Dereferences" a variable, forcing it to render. If that variable contains other variables (like `\[=parent-] \[=child-] content \[/] \[/]`), the child variables will NOT be rendered, but if variables with the same name as the children exist at some point in the parent tree of the dereferenced variable exist, they will be replaced. Variables at the dereferencing position will NOT be replaced.
- `\[#filename]`: Dereferences a Sitix file (or plain file, which would just copy over content without processing it) at this position. The filename must be relative to the root directory (usually the `site` directory), rather than the directory the including file is stored in. This is very useful for templating.
- `\[i request <...>]\[e]\[/]`: This is an if condition. If in Sitix contains an object (between the `\[i]` and either `\[/]` or `\[e]`) that will be rendered if the condition evaluates to "true", and, optionally (between `\[e]` and `\[/]`), an object that will be rendered if the condition is false.
  Requests can be,
  - `config configName`: Check whether or not a command-line config switch is enabled (you can enable them with `-c configName`).
  - `equals variable1 variabl2`: Check whether two variables are the same (the check is flawed, but pretty good. See the relevant section in `main.cpp` for information on this.)
  - `exists variable`: Check whether a variable exists. Good for simple boolean flags.
- `\[f array iterator]`: For loop that iterates over an array (note: in Sitix, every subdirectory of the root dir can be treated as an array of objects, each object being a file! This allows things like generating blog links). The `iterator` variable will be, for every item, the referenced array element. Note: When iterating over a directory, every file will be given a `filename` property! This can be used like `\[f directory i]\[^i.filename]\[/]`, which would spew out the filenames of every file in that directory.
- `\[@command option]`: Set a file-specific flag. File-specific flags are used to do things like minify text. At the moment, the only valid @-commands are `\[@on minify]`, which enables minifier for the file, and `\[@off minify]`, which disables minifier. Minifier simply reduces chains of whitespace to a single whitespace. In the future, `\[@on markdown]` and `\[@off markdown]` will allow Markdown-like processing across the file.

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.
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.
[/] [#templates/default.html]