.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