diff --git a/output/index.html b/output/index.html index e09ebcd..51aa5f6 100644 --- a/output/index.html +++ b/output/index.html @@ -1,4 +1,4 @@ - Sitix | Main
+ Sitix | Main
@@ -10,7 +10,7 @@
-
Sitix is a universal preprocessor. HTML? Of course. CSS? Yep! JavaScript? Certainly! Sitix will template and preprocess anything, whether it be a nice simple HTML file or a hand-edited GIF from 1998. Say goodbye to annoying configuration discrepancies between CSS and HTML and JavaScript - just throw your shared config in a config.stx file and let Sitix do the rest!
+
Sitix is a universal preprocessor. HTML? Of course. CSS? Yep! JavaScript? Certainly! Sitix will template anything, whether it be a nice simple HTML file or a hand-edited GIF from 1998. Say goodbye to annoying configuration discrepancies between CSS and HTML and JavaScript - just throw your shared variables in a config.stx file and let Sitix do the rest!
-
No more restrictive project structures, irritating configuration files, or magic. Goodbye Ruby, "blog-awareness", difficult configuration, and bulky outputs. Sitix renders what you want, when you want it, and doesn't ask questions.
Like what you see? install Sitix and start building modern websites now!
Sitix by Tyler Clarke
Shameless Plugs
Tyler Clarke's personal site
Tyler Clarke's (old) webcomic/blog/personal site
The Avraham Society (first site to be officially generated with Sitix)
The Not Art Gallery
Places in This Site
Home
About
Install Sitix
Todo
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.
\ No newline at end of file +
No more restrictive project structures, irritating configuration files, or magic. Goodbye Ruby, "blog-awareness", difficult configuration, and bulky outputs. Sayonara obtuse frameworks, inefficient CSR, and annoying configuration. Sitix renders what you want, when you want it, and doesn't ask questions.
Like what you see? install Sitix and start building modern websites now!
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
Places in This Site
Home
About
Install Sitix
Todo
Noteboard
Usage
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.
\ No newline at end of file diff --git a/output/pages/about.html b/output/pages/about.html index ef39eb9..80f7bd1 100644 --- a/output/pages/about.html +++ b/output/pages/about.html @@ -1,8 +1 @@ - - - - Sitix | About
-
- About Page (TODO) -
-
Sitix by Tyler Clarke
Shameless Plugs
Tyler Clarke's personal site
Tyler Clarke's (old) webcomic/blog/personal site
The Avraham Society (first site to be officially generated with Sitix)
The Not Art Gallery
Places in This Site
Home
About
Install Sitix
Todo
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.
\ No newline at end of file + Sitix | About

About

Sitix began in Summer '23 when I got fed up with the quirks of Jekyll and decided to build my own templating engine. I put together a schematic not unlike modern Sitix and began implementing it in Rust (which I had just learned), but I quickly realized that my pattern was simply not going to work for such a complex design, and so after a lot of fruitless debugging and such I eventually stopped developing it. It's probably still up here.
In November '24 I was working on a client's website and, once again, got fed up with Jekyll. I remembered the Sitix project I'd begun in 2023 and tried to implement it - but failed spectacularly. Sitix was a shipwreck. So, through early March, I reimplemented: I moved to C++, a much more familiar language; changed the structure to be just quirky enough to satisfy me while still robust and usable, and quickly got Sitix behind several websites.

Sitix is designed to replace everything I like about Jekyll (Liquid. It's just Liquid. I hate literally everything else), while also providing a saner interface, and being much easier to compile and install (farewell, Gem Hell). I also incorporated concepts from JavaScript (especially JSON); parts of the object model are obviously inspired by JavaScript, and the tree-like structure of a Sitix file is heavily remnant of JSON. I also added a little of my own "charm"; evident in the scope system (which is even less sane than JavaScript's) and the not-quite-XML tag structure.

Sitix is a very young project, and I'm still working out the bugs and adding crucial features. The stuff I'm working on is usually going to be near the top of the TODO list.

Sitix is protected by GNU GPLv3. Please put a little "built with Sitix by Tyler Clarke" with a link to this website somewhere on every Sitix-generated page you make (Sitix can make this easy with templates :D), if you choose to use Sitix.
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
Places in This Site
Home
About
Install Sitix
Todo
Noteboard
Usage
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.
\ No newline at end of file diff --git a/output/pages/install.html b/output/pages/install.html index f2c0c1e..4939354 100644 --- a/output/pages/install.html +++ b/output/pages/install.html @@ -1,14 +1,19 @@ - Sitix | Install Sitix
+ + Sitix | Install Sitix

Install Sitix

+ Sitix is written in C++ without any frameworks or anything. It doesn't muck about with Node.JS or Ruby or any such stuff. This means native-level performance, + but requires compilation and testing on many platforms. It's guaranteed to work on Fedora Linux and probably works in most other Linuxes; + MacOS is a possibility. Windows, being too stone-age for POSIX, probably won't be able to run Sitix.

At the moment, Sitix has no prebuilt binaries; I hope to include RPM/DEB packages in the next release.
To install it, you'll need to clone the Github repository, run ./build.sh, and (assuming the build completes successfully) copy the generated sitix binary to some PATH-accessible location (/usr/bin is a good bet). Sitix requires a C++20-compatible - G++ installation; it has no other dependencies. Sitix is theoretically cross-compilable to Windows, but I have no intention of ever officially supporting Windows. + G++ (usually included with the gcc package); it has no other dependencies. Sitix is theoretically cross-compilable to Windows, but I have no intention of ever officially supporting it; + Microsoft doesn't deserve it.
Once you've got Sitix installed, see Usage.
-
Sitix by Tyler Clarke
Shameless Plugs
Tyler Clarke's personal site
Tyler Clarke's (old) webcomic/blog/personal site
The Avraham Society (first site to be officially generated with Sitix)
The Not Art Gallery
Places in This Site
Home
About
Install Sitix
Todo
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.
\ No newline at end of file +
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
Places in This Site
Home
About
Install Sitix
Todo
Noteboard
Usage
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.
\ No newline at end of file diff --git a/output/pages/noteboard.html b/output/pages/noteboard.html new file mode 100644 index 0000000..e3a6af0 --- /dev/null +++ b/output/pages/noteboard.html @@ -0,0 +1 @@ + Sitix | Noteboard

Noteboard

This is where I'll post miscellaneous notes on Sitix stuff. If you're using Sitix (or just interested in the project), you should check back here periodically for information on new releases, design considerations, known bugs, etc. You can think of it as a miniblog.
2024-3-9: The stupid "Something has gone terribly wrong" warning is NOT important; you can safely ignore it. It's just debugging information pour moi.
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
Places in This Site
Home
About
Install Sitix
Todo
Noteboard
Usage
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.
\ No newline at end of file diff --git a/output/pages/todo.html b/output/pages/todo.html index 7a70a82..55522ab 100644 --- a/output/pages/todo.html +++ b/output/pages/todo.html @@ -1,7 +1,8 @@ - Sitix | Todo
+ + Sitix | Todo

Todo

Sitix is still a pretty young piece of software, so if there's a missing feature that isn't on this list, don't hesitate to submit a feature request on the issues page. Alternatively, you could just write it yourself! This TODO list is mostly for my memory, but I would love codebase contributions to get some things crossed off. @@ -12,6 +13,8 @@
  • Code cleaning (need to fix memory management especially)
  • Make config less hack (move from [i config] to [i exists], and create empty objects on global with -c)
  • Add an unpack/ghost operator so setting objects to other objects works (something like [=ghostingName-] [%ghostedObject] [/])
  • +
  • Safety: Sitix should not delete your entire codebase if you accidentally mistype the command.
  • +
  • Get rid of that stupid "something has gone terribly wrong" warning. It's not a problem, it's just an artefact of an old debugging marathon.
  • -
    Sitix by Tyler Clarke
    Shameless Plugs
    Tyler Clarke's personal site
    Tyler Clarke's (old) webcomic/blog/personal site
    The Avraham Society (first site to be officially generated with Sitix)
    The Not Art Gallery
    Places in This Site
    Home
    About
    Install Sitix
    Todo
    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.
    \ No newline at end of file +
    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
    Places in This Site
    Home
    About
    Install Sitix
    Todo
    Noteboard
    Usage
    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.
    \ No newline at end of file diff --git a/output/pages/usage.html b/output/pages/usage.html new file mode 100644 index 0000000..c4e0ef9 --- /dev/null +++ b/output/pages/usage.html @@ -0,0 +1,58 @@ + + + + + Sitix | Usage

    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. +
    +
    + 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.
    + 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
    Places in This Site
    Home
    About
    Install Sitix
    Todo
    Noteboard
    Usage
    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.
    \ No newline at end of file diff --git a/output/res/main.css b/output/res/main.css index f6626ce..5b095a7 100644 --- a/output/res/main.css +++ b/output/res/main.css @@ -1,234 +1 @@ -*, body, html { - margin: 0px; - padding: 0px; - font-family: Lato, Arial, Helvetica, sans-serif; -} - -img { - max-width: 100%; - max-height: 100%; -} - -#nav { - position: sticky; - top: 0px; - box-shadow: 0px 0px 5px black; - padding: 3px; - background-color: white; - z-index: 2; -} - -#nav > div { - padding-top: 0px; - padding-bottom: 0px; - transition: padding 0.5s; - text-align: center; -} - -#nav > div > a { - margin-left: 20px; - margin-right: 20px; -} - -#nav > a { - top: 0px; - position: absolute; - height: 100%; -} - -#nav:hover > div { - padding-top: 10px; - padding-bottom: 10px; -} - -div.text { - padding-top: 50px; - padding-bottom: 50px; - padding-left: 15vw; - padding-right: 15vw; -} - -#bottom { - box-shadow: 0px 0px 5px black; - padding: 50px; - display: grid; - grid-template-areas: 'top top top' - 'line1 line2 line3'; - margin-top: 50px; - grid-template-columns: 1fr 1fr 1fr; -} - -#bottom > div:first-child { - grid-area: top; - text-align: center; -} - -#bottom > div:first-child > a { - height: 2em; - margin-left: auto; - margin-right: 0px; - display: inline-block; - width: 2em; - transform: translateY(0.5em); -} - -#bottom > div:first-child > a > img { - height: 100%; -} - -#bottom > div:first-child > * { - margin-bottom: 20px; - margin-top: 20px; -} - -#bottom > div:first-child > span { -} - -a { - text-decoration: none; - color: #666666; -} - -a:hover { - color: #999999; -} - -body { - min-height: 100vh; - display: flex; - flex-direction: column; -} - -#bottom { - margin-top: auto; -} - -.text.scrolly { - transform: translateX(-200px); - opacity: 0%; - transition: transform 0.5s, opacity 0.5s; -} - -.text.scrolly.scrolly-entered { - opacity: 100%; - transform: none; -} - -#toppybit { - display: flex; - flex-direction: row; - padding: 10%; - box-sizing: border-box; -} - -.huge { - font-size: 6em; -} - -span.big { - font-size: 4em; -} - -#imagine { - position: sticky; - top: 50vh; - transform: translateY(-50%); - display: inline-block; -} - -#switchybit > div > span { - display: inline-block; - background-color: #000044; - padding: 10px; - font-family: monospace; - color: white; - position: sticky; - top: 50vh; - transform: translateY(-50%); -} - -#switchybit > div { - height: 100vh; - opacity: 0%; - transition: opacity 0.1s; -} - -#switchybit > div.scrolly-center { - opacity: 100%; -} - -i.highlight { - color: red; - font-size: 3rem; - text-shadow: 0px 0px 2px red, 0px 0px 4px blue; -} - -#actualbottom { - background-color: black; - text-align: center; - color: white; - font-size: 0.7em; - padding: 5px; -} - -h1, h2, h3, h4, h5, h6 { - text-align: right; - padding-right: 10vw; -} - -h1 { - font-size: 6em; -} - -div.toptext { - padding-left: 35vw; - padding-right: 15vw; - font-size: 1.3em; -} - -.textimage { - display: flex; - padding-left: 10vw; - padding-right: 10vw; - align-items: center; -} - -.textimage > .textimage-text { - flex: 2; - padding: 100px; - font-size: 1.2em; -} - -.textimage:nth-child(2n + 1) { - flex-direction: row-reverse; -} - -.textimage.scrolly:nth-child(2n + 1) { - transform: translateX(100vw); -} - -.textimage.scrolly { - width: 0px; - overflow: hidden; - transition: width 2s, transform 2s, padding 2s; - box-sizing: border-box; - padding: 0px; -} - -.textimage.scrolly.scrolly-entered { - width: 100vw; - transform: none; - padding-left: 10vw; - padding-right: 10vw; -} - -.plug { - text-align: center; - font-size: 3em; -} - -code { - background-color: #000044; - color: white; - font-family: monospace; -} +*:not(ul), body, html { margin: 0px; padding: 0px; font-family: Lato, Arial, Helvetica, sans-serif; } img { max-width: 100%; max-height: 100%; } #nav { position: sticky; top: 0px; box-shadow: 0px 0px 5px black; padding: 3px; background-color: white; z-index: 2; } #nav > div { padding-top: 0px; padding-bottom: 0px; transition: padding 0.5s; text-align: center; } #nav > div > a { margin-left: 20px; margin-right: 20px; } #nav > a { top: 0px; position: absolute; height: 100%; } #nav:hover > div { padding-top: 10px; padding-bottom: 10px; } div.text { padding-top: 50px; padding-bottom: 50px; padding-left: 15vw; padding-right: 15vw; } #bottom { box-shadow: 0px 0px 5px black; padding: 50px; display: grid; grid-template-areas: 'top top top' 'line1 line2 line3'; margin-top: 50px; grid-template-columns: 1fr 1fr 1fr; } #bottom > div:first-child { grid-area: top; text-align: center; } #bottom > div:first-child > a { height: 2em; margin-left: auto; margin-right: 0px; display: inline-block; width: 2em; transform: translateY(0.5em); } #bottom > div:first-child > a > img { height: 100%; } #bottom > div:first-child > * { margin-bottom: 20px; margin-top: 20px; } #bottom > div:first-child > span { } a { text-decoration: none; color: #666666; } a:hover { color: #999999; } body { min-height: 100vh; display: flex; flex-direction: column; } #bottom { margin-top: auto; } .text.scrolly { transform: translateX(-200px); opacity: 0%; transition: transform 0.5s, opacity 0.5s; } .text.scrolly.scrolly-entered { opacity: 100%; transform: none; } #toppybit { display: flex; flex-direction: row; padding: 10%; box-sizing: border-box; } .huge { font-size: 6em; } span.big { font-size: 4em; } #imagine { position: sticky; top: 50vh; transform: translateY(-50%); display: inline-block; } #switchybit > div > span { display: inline-block; background-color: #000044; padding: 10px; font-family: monospace; color: white; position: sticky; top: 50vh; transform: translateY(-50%); } #switchybit > div { height: 100vh; opacity: 0%; transition: opacity 0.1s; } #switchybit > div.scrolly-center { opacity: 100%; } i.highlight { color: red; font-size: 3rem; text-shadow: 0px 0px 2px red, 0px 0px 4px blue; } #actualbottom { background-color: black; text-align: center; color: white; font-size: 0.7em; padding: 5px; } h1, h2, h3, h4, h5, h6 { text-align: center; } h1 { font-size: 6em; text-align: right; padding-right: 10vw; } h2 { font-size: 3em; } div.toptext { padding-left: 35vw; padding-right: 15vw; font-size: 1.3em; } .textimage { display: flex; padding-left: 10vw; padding-right: 10vw; align-items: center; } .textimage > .textimage-text { flex: 2; padding: 100px; font-size: 1.2em; } .textimage:nth-child(2n + 1) { flex-direction: row-reverse; } .textimage.scrolly:nth-child(2n + 1) { transform: translateX(100vw); } .textimage.scrolly { width: 0px; overflow: hidden; transition: width 2s, transform 2s, padding 2s; box-sizing: border-box; padding: 0px; } .textimage.scrolly.scrolly-entered { width: 100vw; transform: none; padding-left: 10vw; padding-right: 10vw; } .plug { text-align: center; font-size: 3em; } code { background-color: #000044; color: white; font-family: monospace; } .note { margin-left: 30vw; margin-right: 30vw; margin-top: 50px; margin-bottom: 50px; background-color: orange; padding: 20px; box-sizing: border-box; border-radius: 20px; min-height: 180px; font-size: 1.2em; } .note::before { content: ""; background-image: url("http://localhost:8080/res/warning.svg"); background-size: contain; width: 100px; height: 100px; display: block; background-position: center; background-repeat: no-repeat; margin: 20px; float: left; } \ No newline at end of file diff --git a/output/res/warning.svg b/output/res/warning.svg new file mode 100644 index 0000000..39f70cf --- /dev/null +++ b/output/res/warning.svg @@ -0,0 +1,59 @@ + + + + + + + + + ! + + diff --git a/site/index.html b/site/index.html index 77d76b6..58c5927 100644 --- a/site/index.html +++ b/site/index.html @@ -32,11 +32,12 @@ but still may be included in other files - for configuration, templating, or even modular elements! [/][=textimage_source-][^baseurl]/res/default.html.png[/][^textimage] [=textimage_text-] - Sitix is a universal preprocessor. HTML? Of course. CSS? Yep! JavaScript? Certainly! Sitix will template and preprocess anything, whether it be a nice simple HTML file or a hand-edited GIF - from 1998. Say goodbye to annoying configuration discrepancies between CSS and HTML and JavaScript - just throw your shared config in a config.stx file and let Sitix do the rest! + Sitix is a universal preprocessor. HTML? Of course. CSS? Yep! JavaScript? Certainly! Sitix will template anything, whether it be a nice simple HTML file or a hand-edited GIF + from 1998. Say goodbye to annoying configuration discrepancies between CSS and HTML and JavaScript - just throw your shared variables in a config.stx file and let Sitix do the rest! [/][=textimage_source-][^baseurl]/res/lato.css.png[/][^textimage]
    No more restrictive project structures, irritating configuration files, or magic. Goodbye Ruby, "blog-awareness", difficult configuration, and bulky outputs. + Sayonara obtuse frameworks, inefficient CSR, and annoying configuration. Sitix renders what you want, when you want it, and doesn't ask questions.
    diff --git a/site/pages/about.html b/site/pages/about.html index a38c422..4d32700 100644 --- a/site/pages/about.html +++ b/site/pages/about.html @@ -1,8 +1,22 @@ -[!] +[!][@on minify] [=title About] +[=isSimple ] [=content-]
    - About Page (TODO) + Sitix began in Summer '23 when I got fed up with the quirks of Jekyll and decided to build my own templating engine. I put together a schematic not unlike + modern Sitix and began implementing it in Rust (which I had just learned), but I quickly realized that my pattern was simply not going to work for such a complex + design, and so after a lot of fruitless debugging and such I eventually stopped developing it. It's probably still up here.
    + In November '24 I was working on a client's website and, once again, got fed up with Jekyll. I remembered the Sitix project I'd begun in 2023 and tried to implement it + - but failed spectacularly. Sitix was a shipwreck. So, through early March, I reimplemented: I moved to C++, a much more familiar language; changed the structure to be + just quirky enough to satisfy me while still robust and usable, and quickly got Sitix behind several websites.

    + Sitix is designed to replace everything I like about Jekyll (Liquid. It's just Liquid. I hate literally everything else), while also providing a saner interface, + and being much easier to compile and install (farewell, Gem Hell). I also incorporated concepts from JavaScript (especially JSON); parts of the object model are + obviously inspired by JavaScript, and the tree-like structure of a Sitix file is heavily remnant of JSON. I also added a little of my own "charm"; evident + in the scope system (which is even less sane than JavaScript's) and the not-quite-XML tag structure.

    + Sitix is a very young project, and I'm still working out the bugs and adding crucial features. The stuff I'm working on is usually going to be near the top of + the TODO list.

    + Sitix is protected by GNU GPLv3. Please put a little "built with Sitix by Tyler Clarke" with a link to this website somewhere on every Sitix-generated page + you make (Sitix can make this easy with templates :D), if you choose to use Sitix.
    [/] [#templates/default.html] \ No newline at end of file diff --git a/site/pages/install.html b/site/pages/install.html index 1846493..42199ad 100644 --- a/site/pages/install.html +++ b/site/pages/install.html @@ -1,11 +1,16 @@ [!] [=title Install Sitix] +[=isSimple ] [=content-]
    + Sitix is written in C++ without any frameworks or anything. It doesn't muck about with Node.JS or Ruby or any such stuff. This means native-level performance, + but requires compilation and testing on many platforms. It's guaranteed to work on Fedora Linux and probably works in most other Linuxes; + MacOS is a possibility. Windows, being too stone-age for POSIX, probably won't be able to run Sitix.

    At the moment, Sitix has no prebuilt binaries; I hope to include RPM/DEB packages in the next release.
    To install it, you'll need to clone the Github repository, run ./build.sh, and (assuming the build completes successfully) copy the generated sitix binary to some PATH-accessible location (/usr/bin is a good bet). Sitix requires a C++20-compatible - G++ installation; it has no other dependencies. Sitix is theoretically cross-compilable to Windows, but I have no intention of ever officially supporting Windows. + G++ (usually included with the gcc package); it has no other dependencies. Sitix is theoretically cross-compilable to Windows, but I have no intention of ever officially supporting it; + Microsoft doesn't deserve it.
    Once you've got Sitix installed, see Usage. diff --git a/site/pages/noteboard.html b/site/pages/noteboard.html new file mode 100644 index 0000000..86bbed1 --- /dev/null +++ b/site/pages/noteboard.html @@ -0,0 +1,13 @@ +[!][@on minify] +[=title Noteboard] +[=isSimple ] +[=content-] +
    + This is where I'll post miscellaneous notes on Sitix stuff. If you're using Sitix (or just interested in the project), you should check back here + periodically for information on new releases, design considerations, known bugs, etc. You can think of it as a miniblog. +
    +
    + 2024-3-9: The stupid "Something has gone terribly wrong" warning is NOT important; you can safely ignore it. It's just debugging information pour moi. +
    +[/] +[#templates/default.html] \ No newline at end of file diff --git a/site/pages/todo.html b/site/pages/todo.html index a51e027..8b78575 100644 --- a/site/pages/todo.html +++ b/site/pages/todo.html @@ -1,5 +1,6 @@ [!] [=title Todo] +[=isSimple ] [=content-]
    Sitix is still a pretty young piece of software, so if there's a missing feature that isn't on this list, don't hesitate to submit a feature request on the issues page. @@ -11,6 +12,8 @@
  • Code cleaning (need to fix memory management especially)
  • Make config less hack (move from \[i config] to \[i exists], and create empty objects on global with -c)
  • Add an unpack/ghost operator so setting objects to other objects works (something like \[=ghostingName-] \[%ghostedObject] \[/])
  • +
  • Safety: Sitix should not delete your entire codebase if you accidentally mistype the command.
  • +
  • Get rid of that stupid "something has gone terribly wrong" warning. It's not a problem, it's just an artefact of an old debugging marathon.
  • [/] diff --git a/site/pages/usage.html b/site/pages/usage.html new file mode 100644 index 0000000..3038b8f --- /dev/null +++ b/site/pages/usage.html @@ -0,0 +1,58 @@ +[!] +[=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] \ No newline at end of file diff --git a/site/res/main.css b/site/res/main.css index f6626ce..11b2d6e 100644 --- a/site/res/main.css +++ b/site/res/main.css @@ -1,4 +1,6 @@ -*, body, html { +[!][@on minify] +[#config.stx] +*:not(ul), body, html { margin: 0px; padding: 0px; font-family: Lato, Arial, Helvetica, sans-serif; @@ -172,12 +174,17 @@ i.highlight { } h1, h2, h3, h4, h5, h6 { - text-align: right; - padding-right: 10vw; + text-align: center; } h1 { font-size: 6em; + text-align: right; + padding-right: 10vw; +} + +h2 { + font-size: 3em; } div.toptext { @@ -232,3 +239,29 @@ code { color: white; font-family: monospace; } + +.note { + margin-left: 30vw; + margin-right: 30vw; + margin-top: 50px; + margin-bottom: 50px; + background-color: orange; + padding: 20px; + box-sizing: border-box; + border-radius: 20px; + min-height: 180px; + font-size: 1.2em; +} + +.note::before { + content: ""; + background-image: url("[^baseurl]/res/warning.svg"); + background-size: contain; + width: 100px; + height: 100px; + display: block; + background-position: center; + background-repeat: no-repeat; + margin: 20px; + float: left; +} \ No newline at end of file diff --git a/site/res/warning.svg b/site/res/warning.svg new file mode 100644 index 0000000..39f70cf --- /dev/null +++ b/site/res/warning.svg @@ -0,0 +1,59 @@ + + + + + + + + + ! + + diff --git a/site/templates/default.html b/site/templates/default.html index a504476..16640b1 100644 --- a/site/templates/default.html +++ b/site/templates/default.html @@ -26,6 +26,9 @@
    + [i exists isSimple] +

    [^title]

    + [/] [^content]
    @@ -37,6 +40,9 @@ 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