From edfec58b9214454c79d1b85369d8f7293f206ac6 Mon Sep 17 00:00:00 2001 From: Lazy Hippopotamus Date: Sat, 23 Mar 2024 18:55:10 -0400 Subject: [PATCH] update the website. probably not for the last time today. --- site/pages/todo.html | 3 ++- site/pages/usage.html | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/site/pages/todo.html b/site/pages/todo.html index 3266c47..6408142 100644 --- a/site/pages/todo.html +++ b/site/pages/todo.html @@ -8,9 +8,10 @@
[/] diff --git a/site/pages/usage.html b/site/pages/usage.html index 4b3d13c..fcfd95a 100644 --- a/site/pages/usage.html +++ b/site/pages/usage.html @@ -43,6 +43,11 @@ to a single whitespace. \[@on markdown] and \[@off markdown] allow Markdown-like processing across the file. Sitix Markdown is not quite ready for widespread use, yet, but at the time of writing supports *italic*, **bold**, __underline__, ~~strikethrough~~, `code`, and automatic paragraphs/line breaks. It works quite nicely with minifier, yes. +
  • \[>filename]object\[/]: Renders an object into a new file represented by filename. Filename should be a relative path as it will be transmuted into + the output directory. This is very useful for, say, turning a single Sitix object file containing webcomic post data into a directory full of posts.
  • +
  • \[~object1 object2]: Sets the ghost on object1 to object2, effectively cloning object2 to object1. It is not a true copy; changes in object2 will be + reflected in object1. However, unlike with normal dereference-setting (\[=object1]\[^object2]\[/]), you can access nested objects inside the ghost. + It's not unlike changing the value of a pointer in C.
  • 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__, @@ -59,6 +64,13 @@
  • equals: Checks if two values on the stack are equal to each other. It will remove both values from the stack and add a boolean value as the result.
  • not: Pops the top value off the stack and replaces it with a boolean equal to the opposite of the truthyness of that object. "Hello World" not would just be false, for instance.
  • +
  • concat: Stringifies the top two items on stack and concatenates them together in order.
  • +
  • strip_fname: Cuts off the directories and the file extension of a file, going from "test/home/base.py.out" to "base.py", for instance.
  • +
  • copy: Copy the top thing on stack.
  • +
  • count_back: Pops the top two items off stack and searches for the first occurring index of the smaller string in the larger string. Don't get it? Read the code.
  • +
  • slice_left: Pops the top two items off stack and, assuming one is a number, stringifies the other one and slices from the start of that to the index + represented by the number. This discards the character at the index, so "hello,world" 5 slice_left returns just "hello".
  • +
  • slice_right: Same behavior as slice_left, except it slices the "right" side, so "hello,world" 5 slice_left would return "world".
  • 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],