Here's a fun fact about the setup: the files are actually written as D modules. The source code looks like

// just docs: title
/++

Article content

+/
module Blog.Posted_date;


Now, that might seem a little silly, but it provides some interesting advantages (I should have wrote about this in the first article!):

1) I can use adrdox's linking with the same pattern: I can link with the shortcuts to the titles. Similarly, adrdox's navigation can handle it automatically.

2) I can compile them!


It is #2 that is going to be fun. If I want to write some example code in there, I can compile and run it without any copy/paste action. But wait, how do you see the code in the article?

As a documented unittest, of course! And adrdox has two features that extend it: an `// exclude from docs` comment to take boring plumbing lines out of the publication

/++ I can compile and run this as a test, and display it in the article as a complete program the user can copy/paste and run themselves! +/
unittest {
        import arsd.terminal;

        void main() {
auto terminal = Terminal(ConsoleOutputType.linear);
                string line = terminal.getline();
                terminal.writeln("You wrote: ", line);
        }

        main; // exclude from docs
}


And I can embed the unittest somewhere in the text (via a magic `$(EMBED_UNITTEST id)`) instead of just listing them at the end under examples, so make it flow better with the narrative.


It'll be fun to play with this in the future :)

Reply via email to