.mixin markdown
runeblog
Runeblog is a blogging tool written in Ruby. It has these basic characteristics:
- It is usable entirely in text mode from the terminal
- It publishes web pages as static HTML
- So far, yes, like Jekyll
- It's based on Livetext (highly extensible Ruby-based markup)
- It has the concept of multiple "views" for a blog
- The multiple views are in effect multiple blogs managed with the same backend.
.h2 What is Livetext?
Livetext is a markup format 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 it can display menus
and such to the user).
The help message looks like this:
.mono
Basics: Views:
------------------------------------------- -------------------------------------------
h, help This message change view VIEW Change current view
q, quit Exit the program cv VIEW Change current view
v, version Print version information new view Create a new view
clear Clear screen list views List all views available
lsv Same as: list views
Posts: Advanced:
------------------------------------------- -------------------------------------------
p, post Create a new post config Edit various system files
new post Same as p, post customize (BUGGY) Change set of tags, extra views
lsp, list posts List posts in current view preview Look at current (local) view in browser
lsd, list drafts List all drafts (all views) browse Look at current (published) view in browser
delete ID [ID...] Remove multiple posts rebuild Regenerate all posts and relink
undelete ID Undelete a post publish Publish (current view)
edit ID Edit a post ssh Login to remote server
import ASSETS Import assets (images, etc.) manage WIDGET 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.
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.
[no view] new view mystuff
[mystuff]
To create a new post, use the `[new post] command (also abbreviated `post or simply `[p]). You will be
prompted for a title:
[mystuff] new post
Title: This is my first post
Then you'll be sent into the editor (currently vim but can be others):
FIXME add example here
FIXME wizard?
(publishing one-time setup - server, ssh keys, etc.)
preview...
publish...
browse...
(and so on)
To be continued
.h2 Customizing the default templates and configuration
You can use the `config command to choose a file to edit.
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
.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
FIXME add details here
.h2 Basics of Livetext
TBD
Bold, italics, etc.
single, double, bracketed
Common dot commands)
.debug
.say
.nopara
.quit
indented dot-commands
Using external files
.mixin
.include
.copy
.seek
Predefined functions and variables
\$File
\$\$date
etc.
.h2 Runeblog-specific features (Liveblog
TBD
Dot commands - the basics
.mixin liveblog
.post
.title
.views
.tags
.teaser
Dot commands - more advanced
.image
.inset
.dropcap
.pin
Variables and functions
\$view, etc.
\$\$date, \$\$link, etc.
.h2 Defining your own features
Dot commands, variables, functions
.def/.end
.set
.variables
.heredoc
.func
Defining these in Ruby
.h2 More topics
Meta tags, etc.
CSS
Widgets
pages
links
pinned
faq
sitemap
news
etc.
Banner and navbar
Creating your own widgets
Special tags/functions coming "soon"
github, gitlab, gist
wikipedia
youtube, vimeo
twitter, instagram
etc.
TBD
.h2 More later...
TBD