.mixin markdown <div style=“float: left; align: left; vertical-align: bottom”> <img src=“readme/raido4.png” width=“210” height=“295” align=“left”></img> </div> <h1>runeblog</h1>Runeblog is a blogging tool written in Ruby. It has these basic characteristics: <ul>

<li>It is usable entirely in text mode from the terminal</li>
<li>It publishes web pages as static HTML</li>
<li>So far, yes, like Jekyll</li>
<li>It's based on Livetext (highly extensible Ruby-based markup)</li>
<li>It has the concept of multiple "views" for a blog</li>
<li>The multiple views are in effect multiple blogs managed with the same backend.</li>
<li>Each view may have its own "look and feel" (and even be hosted on differing domains)</li>

</ul>

.h2 What is Livetext?

Livetext is a markup format (media generator?) that is a throwback to the old, old days of text formatters such as “nroff. It’s very flexible, and it is extensible _[in Ruby].

It is far from mature or full-featured, but it is usable. Runeblog uses Livetext, along with some custom definitions, to try to ease the formatting of a blog entry.

.h2 What are “views”?

Think of them as multiple separate blogs with the same backend. Why would you want to do this? Maybe you wouldn’t, but I do.

The purpose is to present different “faces” to different audiences. In my case, my computing-related stuff would go into one view, and my hometown-related things would go into another. There might be a view that only old friends or close friends can see. There might be a view purely for reviews of music, books, and movies.

But the important points are these:

.list All the views will be managed the same way in the same place, and they will all share common data. Any post can easily be included in a single view, in more than one, or in all of them. Each view can have its own look and feel, and it can be linked/published separately from the others. Each view can be hosted in a different location and/or a different server and domain Any post can be in more than one view .end

.h2 The blog environment

There is a command-line tool called ‘blog which is a REPL (read-eval-print loop). Note that this tool is a curses-based environment (mainly so that it can display menus and such to the user).

The help message looks like this:

.mono

<b>Basics:</b>                                         <b>Views:</b>
-------------------------------------------     -------------------------------------------
<b>h, help</b>           This message                  <b>change view VIEW</b>  Change current view
<b>q, quit</b>           Exit the program              <b>cv VIEW</b>           Change current view
<b>v, version</b>        Print version information     <b>new view</b>          Create a new view
<b>clear</b>             Clear screen                  <b>list views</b>        List all views available
                                                       <b>lsv</b>               Same as: list views


<b>Posts:</b>                                          <b>Advanced:</b>
-------------------------------------------     -------------------------------------------
<b>p, post</b>           Create a new post             <b>config</b>            Edit various system files
<b>new post</b>          Same as p, post               <b>customize</b>         (BUGGY) Change set of tags, extra views
<b>lsp, list posts</b>   List posts in current view    <b>preview</b>           Look at current (local) view in browser
<b>lsd, list drafts</b>  List all drafts (all views)   <b>browse</b>            Look at current (published) view in browser
<b>delete ID [ID...]</b> Remove multiple posts         <b>rebuild</b>           Regenerate all posts and relink
<b>undelete ID</b>       Undelete a post               <b>publish</b>           Publish (current view)
<b>edit ID</b>           Edit a post                   <b>ssh</b>               Login to remote server
<b>import ASSETS</b>     Import assets (images, etc.)  <b>manage WIDGET</b>     Manage content/layout of a widget

.end

.h2 Getting started

But when you first run the REPL, it checks for an existing blog repository under the ‘[.blogs] directory. If it doesn’t find one, it asks whether you want to create a new blog repo. Enter ‘y for yes. . If you enter `y for yes, it creates a sort of “skeleton” with a single view called `[test_view].

You’ll then enter the editor (vim for now) to add configuration info to the ‘global.lt3 file.

<!– <pre>FIXME add menu screenshot here</pre> –> <!– <pre>FIXME add vim screenshot here</pre> –>

<img src=“readme/vim-global.png” width=“494” height=“696” align=“center”></img>

The next thing you should do is to create at least one view of your own. Use the ‘[new view] command for this. Note that the current view is displayed as part of the prompt.

<pre> [no view] new view mystuff
[mystuff] </pre>

To create a new post, use the ‘[new post] command (also abbreviated `post or simply `[p]). You will be prompted for a title:

<pre> [mystuff] new post
Title: This is my first post </pre>

Then you’ll be sent into the editor (currently vim but can be others):

<img src=“readme/edit-first.png” width=“506” height=“383” align=“center”></img>

<pre> FIXME wizard? (publishing one-time setup - server, ssh keys, etc.) preview… publish… browse… (and so on) </pre>

To be continued

.h2 Customizing the default templates and configuration

You can use the ‘config command to choose a file to edit.

<img src=“readme/config-menu.png” width=“700” height=“547” align=“center”></img>

The meaning and interaction of these files will be explained later. *FIXME

When you make changes, ‘rebuild will detect these and regenerate whatever files are needed.

.h2 The directory structure for a view

Subject to change TBD: Add details

<pre>

.blogs/views/mystuff/
├── assets
├── posts
├── remote
│   ├── assets
│   ├── banner
│   ├── etc
│   ├── permalink
│   └── widgets
│       ├── ad
│       ├── links
│       ├── news
│       ├── pages
│       └── pinned
└── themes
    └── standard
        ├── banner
        ├── blog
        ├── etc
        ├── post
        └── widgets
            ├── ad
            ├── bydates
            ├── links
            ├── news
            ├── pages
            ├── pinned
            ├── search
            ├── sitemap
            └── tag-cloud

</pre>

<pre>FIXME add details here</pre>

.h2 Basics of Livetext

TBD

Bold, italics, etc.

single, double, bracketed

<b>Common dot commands) <pre>

.debug
.say
.nopara
.quit
indented dot-commands

</pre>

Using external files <pre>

.mixin
.include
.copy
.seek

</pre>

Predefined functions and variables <pre>

\$File
`[\$\$date]
etc.

</pre>

.h2 Runeblog-specific features (Liveblog)</b>

TBD

Dot commands - the basics <pre>

.mixin liveblog
.post
.title
.views
.tags
.teaser

</pre>

Dot commands - more advanced <pre>

.image
.inset
.dropcap
.pin

</pre>

Variables and functions <pre>

\$view, etc.
\$\$date, \$\$link, etc.

</pre>

.h2 Defining your own features

Dot commands, variables, functions <pre>

.def/.end
.set
.variables
.heredoc
.func

</pre>

Defining these in Ruby

.h2 More topics

Meta tags, etc. CSS

Widgets <pre>

pages
links 
pinned
faq
sitemap
news
etc.

</pre>

Banner and navbar

Creating your own widgets

Special tags/functions coming “soon” <pre>

github, gitlab, gist
wikipedia
youtube, vimeo
twitter, instagram
etc.

</pre>

TBD

.h2 More later…

TBD