runeblog 0.3.02
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.lt3 +279 -0
- data/README.md +312 -0
- data/bin/blog +200 -0
- data/bin/mkwidget +164 -0
- data/data/EDITOR +1 -0
- data/data/ROOT +1 -0
- data/data/VIEW +1 -0
- data/data/features.txt +18 -0
- data/data/global.lt3 +20 -0
- data/data/universal.lt3 +18 -0
- data/empty_view/assets/austin-pano.jpg +0 -0
- data/empty_view/assets/sky2.jpg +0 -0
- data/empty_view/config/exper/2svg.lt3 +38 -0
- data/empty_view/config/exper/gen_svg.rb +60 -0
- data/empty_view/config/exper/meta.html +10 -0
- data/empty_view/config/exper/s2.html +25 -0
- data/empty_view/config/exper/varmint.rb +50 -0
- data/empty_view/config/facebook/credentials.txt +7 -0
- data/empty_view/config/facebook/facebook.rb +42 -0
- data/empty_view/config/facebook/fb.html +10 -0
- data/empty_view/config/facebook/fb.js.lt3 +15 -0
- data/empty_view/config/reddit/credentials.txt +6 -0
- data/empty_view/config/reddit/notes.txt +4 -0
- data/empty_view/config/reddit/reddit_post_url.py +34 -0
- data/empty_view/config/reddit/redpost.rb +43 -0
- data/empty_view/config/reddit/the-graffiti-wall.html +91 -0
- data/empty_view/config/twitter/credentials.txt +3 -0
- data/empty_view/config/twitter/tw.html +12 -0
- data/empty_view/config/twitter/tw.js +5 -0
- data/empty_view/config/twitter/twitter.rb +35 -0
- data/empty_view/posts/GIT_IS_DUMB +1 -0
- data/empty_view/remote/assets/GIT_IS_DUMB +1 -0
- data/empty_view/remote/banner/navbar/GIT_IS_DUMB +0 -0
- data/empty_view/remote/etc/GIT_IS_DUMB +1 -0
- data/empty_view/remote/permalink/GIT_IS_DUMB +1 -0
- data/empty_view/remote/widgets/ad/GIT_IS_DUMB +2 -0
- data/empty_view/remote/widgets/links/GIT_IS_DUMB +2 -0
- data/empty_view/remote/widgets/news/GIT_IS_DUMB +2 -0
- data/empty_view/remote/widgets/pages/GIT_IS_DUMB +2 -0
- data/empty_view/remote/widgets/pinned/GIT_IS_DUMB +2 -0
- data/empty_view/settings/features.txt +18 -0
- data/empty_view/settings/publish.txt +5 -0
- data/empty_view/settings/recent.txt +6 -0
- data/empty_view/settings/view.txt +4 -0
- data/empty_view/themes/standard/README +59 -0
- data/empty_view/themes/standard/banner/banner.lt3 +5 -0
- data/empty_view/themes/standard/banner/navbar/about.lt3 +18 -0
- data/empty_view/themes/standard/banner/navbar/contact.lt3 +18 -0
- data/empty_view/themes/standard/banner/navbar/faq.lt3 +1 -0
- data/empty_view/themes/standard/banner/navbar/list.data +3 -0
- data/empty_view/themes/standard/banner/top.lt3 +20 -0
- data/empty_view/themes/standard/blog/generate.lt3 +21 -0
- data/empty_view/themes/standard/blog/head.lt3 +16 -0
- data/empty_view/themes/standard/blog/index.lt3 +17 -0
- data/empty_view/themes/standard/blog/post_entry.lt3 +21 -0
- data/empty_view/themes/standard/etc/blog.css.lt3 +62 -0
- data/empty_view/themes/standard/etc/externals.lt3 +24 -0
- data/empty_view/themes/standard/etc/favicon.ico +0 -0
- data/empty_view/themes/standard/etc/misc.js +20 -0
- data/empty_view/themes/standard/post/generate.lt3 +38 -0
- data/empty_view/themes/standard/post/head.lt3 +7 -0
- data/empty_view/themes/standard/post/index.lt3 +24 -0
- data/empty_view/themes/standard/post/permalink.lt3 +32 -0
- data/empty_view/themes/standard/widgets/README +4 -0
- data/empty_view/themes/standard/widgets/ad/ad.lt3 +22 -0
- data/empty_view/themes/standard/widgets/ad/ad1.png +0 -0
- data/empty_view/themes/standard/widgets/ad/ad2.png +0 -0
- data/empty_view/themes/standard/widgets/ad/ad3.png +0 -0
- data/empty_view/themes/standard/widgets/ad/ad4.png +0 -0
- data/empty_view/themes/standard/widgets/bydates/README +2 -0
- data/empty_view/themes/standard/widgets/bydates/bydates.rb +18 -0
- data/empty_view/themes/standard/widgets/bydates/card.css +1 -0
- data/empty_view/themes/standard/widgets/bydates/custom.rb +1 -0
- data/empty_view/themes/standard/widgets/bydates/main.css +2 -0
- data/empty_view/themes/standard/widgets/links/README +2 -0
- data/empty_view/themes/standard/widgets/links/card.css +1 -0
- data/empty_view/themes/standard/widgets/links/custom.rb +1 -0
- data/empty_view/themes/standard/widgets/links/links.rb +90 -0
- data/empty_view/themes/standard/widgets/links/list.data +3 -0
- data/empty_view/themes/standard/widgets/links/main.css +2 -0
- data/empty_view/themes/standard/widgets/news/README +2 -0
- data/empty_view/themes/standard/widgets/news/card.css +1 -0
- data/empty_view/themes/standard/widgets/news/custom.rb +1 -0
- data/empty_view/themes/standard/widgets/news/list.data +4 -0
- data/empty_view/themes/standard/widgets/news/main.css +2 -0
- data/empty_view/themes/standard/widgets/news/news.rb +88 -0
- data/empty_view/themes/standard/widgets/pages/README +2 -0
- data/empty_view/themes/standard/widgets/pages/card.css +1 -0
- data/empty_view/themes/standard/widgets/pages/custom.rb +1 -0
- data/empty_view/themes/standard/widgets/pages/disclaim.lt3 +10 -0
- data/empty_view/themes/standard/widgets/pages/faq.lt3 +40 -0
- data/empty_view/themes/standard/widgets/pages/like-dislike.lt3 +11 -0
- data/empty_view/themes/standard/widgets/pages/list.data +4 -0
- data/empty_view/themes/standard/widgets/pages/local.rb +0 -0
- data/empty_view/themes/standard/widgets/pages/main.css +2 -0
- data/empty_view/themes/standard/widgets/pages/other-stuff.lt3 +10 -0
- data/empty_view/themes/standard/widgets/pages/pages.rb +95 -0
- data/empty_view/themes/standard/widgets/pinned/README +2 -0
- data/empty_view/themes/standard/widgets/pinned/card.css +1 -0
- data/empty_view/themes/standard/widgets/pinned/custom.rb +1 -0
- data/empty_view/themes/standard/widgets/pinned/main.css +2 -0
- data/empty_view/themes/standard/widgets/pinned/pinned.rb +99 -0
- data/empty_view/themes/standard/widgets/search/README +2 -0
- data/empty_view/themes/standard/widgets/search/card.css +1 -0
- data/empty_view/themes/standard/widgets/search/custom.rb +1 -0
- data/empty_view/themes/standard/widgets/search/main.css +2 -0
- data/empty_view/themes/standard/widgets/search/search.rb +18 -0
- data/empty_view/themes/standard/widgets/sitemap/README +2 -0
- data/empty_view/themes/standard/widgets/sitemap/card.css +1 -0
- data/empty_view/themes/standard/widgets/sitemap/custom.rb +1 -0
- data/empty_view/themes/standard/widgets/sitemap/main.css +2 -0
- data/empty_view/themes/standard/widgets/sitemap/sitemap.rb +18 -0
- data/empty_view/themes/standard/widgets/tag-cloud/OLD-example.lt3 +12 -0
- data/empty_view/themes/standard/widgets/tag-cloud/README +2 -0
- data/empty_view/themes/standard/widgets/tag-cloud/card.css +1 -0
- data/empty_view/themes/standard/widgets/tag-cloud/custom.rb +1 -0
- data/empty_view/themes/standard/widgets/tag-cloud/main.css +2 -0
- data/empty_view/themes/standard/widgets/tag-cloud/tag-cloud.lt3 +3 -0
- data/empty_view/themes/standard/widgets/tag-cloud/tag-cloud.rb +18 -0
- data/lib/Javascript.stuff +69 -0
- data/lib/helpers-blog.rb +155 -0
- data/lib/helpers-repl.rb +201 -0
- data/lib/liveblog.rb +825 -0
- data/lib/logging.rb +44 -0
- data/lib/lowlevel.rb +73 -0
- data/lib/pathmagic.rb +14 -0
- data/lib/post.rb +211 -0
- data/lib/processing.rb +60 -0
- data/lib/publish.rb +73 -0
- data/lib/repl.rb +597 -0
- data/lib/runeblog.rb +773 -0
- data/lib/runeblog_version.rb +50 -0
- data/lib/view.rb +69 -0
- data/runeblog.gemspec +42 -0
- data/test/austin.rb +158 -0
- data/test/fakeimage.jpg +0 -0
- data/test/general_test.rb +304 -0
- data/test/make_blog.rb +196 -0
- data/test/test +3 -0
- metadata +242 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: af242702c47c1cad260040a42b4fe58f5fb84e83934bfa80e0f12fd3e7083c9c
|
|
4
|
+
data.tar.gz: 90b1d17454ce166e5c89b1c8ed6cc43f129a708a14200b94a1bb5c2a5a721a7b
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: a70f36f01ebdfc94db5b6794b8975b876b0255b154d8393d87e7728f19010c478daaa93462cbb21aa0bee539c4d4a922640d8c92f7f3707538974d5cbe60f65d
|
|
7
|
+
data.tar.gz: 50d5b646a4fa6e050f0aedb2789371c61fd5115ce35d03051b3ce690f113b47182782951ac8a6e7742bbf1316e7791fcccfd653d2d67911bf75b4bf3e62ae4a6
|
data/README.lt3
ADDED
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
.mixin markdown
|
|
2
|
+
<div style="float: left; align: left; vertical-align: bottom">
|
|
3
|
+
<img src="readme/raido4.png" width="210" height="295" align="left"></img>
|
|
4
|
+
</div>
|
|
5
|
+
<h1>runeblog</h1><b>Runeblog</b> is a blogging tool written in Ruby. It has these basic characteristics:
|
|
6
|
+
<ul>
|
|
7
|
+
<li>It is usable entirely in text mode from the terminal</li>
|
|
8
|
+
<li>It publishes web pages as static HTML</li>
|
|
9
|
+
<li>So far, yes, like Jekyll</li>
|
|
10
|
+
<li>It's based on Livetext (highly extensible Ruby-based markup)</li>
|
|
11
|
+
<li>It has the concept of multiple "views" for a blog</li>
|
|
12
|
+
<li>The multiple views are in effect multiple blogs managed with the same backend.</li>
|
|
13
|
+
</ul>
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
.h2 What is Livetext?
|
|
18
|
+
|
|
19
|
+
Livetext is a markup format that is a throwback to the old, old days of text
|
|
20
|
+
formatters such as ``nroff. It's very flexible, and it is extensible _[in Ruby].
|
|
21
|
+
|
|
22
|
+
It is far from mature or full-featured, but it is usable. Runeblog uses Livetext,
|
|
23
|
+
along with some custom definitions, to try to ease the formatting of a blog entry.
|
|
24
|
+
|
|
25
|
+
.h2 What are "views"?
|
|
26
|
+
|
|
27
|
+
Think of them as multiple separate blogs with the same backend. Why would you
|
|
28
|
+
want to do this? Maybe you wouldn't, but I do.
|
|
29
|
+
|
|
30
|
+
The purpose is to present different "faces" to different audiences. In my case,
|
|
31
|
+
my computing-related stuff would go into one view, and my hometown-related things
|
|
32
|
+
would go into another. There might be a view that only old friends or close friends
|
|
33
|
+
can see. There might be a view purely for reviews of music, books, and movies.
|
|
34
|
+
|
|
35
|
+
But the important points are these:
|
|
36
|
+
|
|
37
|
+
.list
|
|
38
|
+
<i>All</i> the views will be managed the same way in the same place, and they will all share common data.
|
|
39
|
+
Any post can easily be included in a single view, in more than one, or in all of them.
|
|
40
|
+
Each view can have its own look and feel, and it can be linked/published separately from the others.
|
|
41
|
+
Each view can be hosted in a different location and/or a different server and domain
|
|
42
|
+
Any post can be in more than one view
|
|
43
|
+
.end
|
|
44
|
+
|
|
45
|
+
.h2 The <tt>blog</tt> environment
|
|
46
|
+
|
|
47
|
+
There is a command-line tool called `blog which is a REPL (read-eval-print loop).
|
|
48
|
+
Note that this tool is a curses-based environment (mainly so it can display menus
|
|
49
|
+
and such to the user).
|
|
50
|
+
|
|
51
|
+
The help message looks like this:
|
|
52
|
+
|
|
53
|
+
.mono
|
|
54
|
+
<b>Basics:</b> <b>Views:</b>
|
|
55
|
+
------------------------------------------- -------------------------------------------
|
|
56
|
+
<b>h, help</b> This message <b>change view VIEW</b> Change current view
|
|
57
|
+
<b>q, quit</b> Exit the program <b>cv VIEW</b> Change current view
|
|
58
|
+
<b>v, version</b> Print version information <b>new view</b> Create a new view
|
|
59
|
+
<b>clear</b> Clear screen <b>list views</b> List all views available
|
|
60
|
+
<b>lsv</b> Same as: list views
|
|
61
|
+
<br>
|
|
62
|
+
<b>Posts:</b> <b>Advanced:</b>
|
|
63
|
+
------------------------------------------- -------------------------------------------
|
|
64
|
+
<b>p, post</b> Create a new post <b>config</b> Edit various system files
|
|
65
|
+
<b>new post</b> Same as p, post <b>customize</b> (BUGGY) Change set of tags, extra views
|
|
66
|
+
<b>lsp, list posts</b> List posts in current view <b>preview</b> Look at current (local) view in browser
|
|
67
|
+
<b>lsd, list drafts</b> List all drafts (all views) <b>browse</b> Look at current (published) view in browser
|
|
68
|
+
<b>delete ID [ID...]</b> Remove multiple posts <b>rebuild</b> Regenerate all posts and relink
|
|
69
|
+
<b>undelete ID</b> Undelete a post <b>publish</b> Publish (current view)
|
|
70
|
+
<b>edit ID</b> Edit a post <b>ssh</b> Login to remote server
|
|
71
|
+
<b>import ASSETS</b> Import assets (images, etc.) <b>manage WIDGET</b> Manage content/layout of a widget
|
|
72
|
+
.end
|
|
73
|
+
|
|
74
|
+
.h2 Getting started
|
|
75
|
+
|
|
76
|
+
But when you first run the REPL, it checks for an existing blog repository under
|
|
77
|
+
the `[.blogs] directory. If it doesn't find one, it asks whether you want to create
|
|
78
|
+
a new blog repo. Enter `y for yes.
|
|
79
|
+
. If you enter `y for yes, it creates a sort of "skeleton" with a single view called `[test_view].
|
|
80
|
+
|
|
81
|
+
You'll then enter the editor (vim for now) to add configuration info to the `global.lt3 file.
|
|
82
|
+
|
|
83
|
+
<!-- <pre><b>FIXME add menu screenshot here</b></pre> -->
|
|
84
|
+
<!-- <pre><b>FIXME add vim screenshot here</b></pre> -->
|
|
85
|
+
<img src="readme/vim-global.png" width="494" height="696" align="center"></img>
|
|
86
|
+
|
|
87
|
+
The next thing you should do is to create at least one view of your own. Use the `[new view]
|
|
88
|
+
command for this. Note that the current view is displayed as part of the prompt.
|
|
89
|
+
|
|
90
|
+
<pre>
|
|
91
|
+
<b>[no view]</b> new view mystuff<br>
|
|
92
|
+
<b>[mystuff]</b>
|
|
93
|
+
</pre>
|
|
94
|
+
|
|
95
|
+
To create a new post, use the `[new post] command (also abbreviated `post or simply `[p]). You will be
|
|
96
|
+
prompted for a title:
|
|
97
|
+
|
|
98
|
+
<pre>
|
|
99
|
+
<b>[mystuff]</b> new post<br>
|
|
100
|
+
<b>Title:</b> This is my first post
|
|
101
|
+
</pre>
|
|
102
|
+
|
|
103
|
+
Then you'll be sent into the editor (currently vim but can be others):
|
|
104
|
+
|
|
105
|
+
<img src="readme/edit-first.png" width="506" height="383" align="center"></img>
|
|
106
|
+
|
|
107
|
+
<pre>
|
|
108
|
+
<b>FIXME wizard?</b>
|
|
109
|
+
(publishing one-time setup - server, ssh keys, etc.)
|
|
110
|
+
preview...
|
|
111
|
+
publish...
|
|
112
|
+
browse...
|
|
113
|
+
(and so on)
|
|
114
|
+
</pre>
|
|
115
|
+
|
|
116
|
+
<b>To be continued</b>
|
|
117
|
+
|
|
118
|
+
.h2 Customizing the default templates and configuration
|
|
119
|
+
|
|
120
|
+
You can use the `config command to choose a file to edit.
|
|
121
|
+
|
|
122
|
+
<img src="readme/config-menu.png" width="700" height="547" align="center"></img>
|
|
123
|
+
|
|
124
|
+
The meaning and interaction of these files will be explained later. *FIXME
|
|
125
|
+
|
|
126
|
+
When you make changes, `rebuild will detect these and regenerate whatever files
|
|
127
|
+
are needed.
|
|
128
|
+
|
|
129
|
+
.h2 The directory structure for a view
|
|
130
|
+
|
|
131
|
+
<b>Subject to change</b>
|
|
132
|
+
TBD: Add details
|
|
133
|
+
|
|
134
|
+
<pre>
|
|
135
|
+
.blogs/views/mystuff/
|
|
136
|
+
├── assets
|
|
137
|
+
├── posts
|
|
138
|
+
├── remote
|
|
139
|
+
│ ├── assets
|
|
140
|
+
│ ├── banner
|
|
141
|
+
│ ├── etc
|
|
142
|
+
│ ├── permalink
|
|
143
|
+
│ └── widgets
|
|
144
|
+
│ ├── ad
|
|
145
|
+
│ ├── links
|
|
146
|
+
│ ├── news
|
|
147
|
+
│ ├── pages
|
|
148
|
+
│ └── pinned
|
|
149
|
+
└── themes
|
|
150
|
+
└── standard
|
|
151
|
+
├── banner
|
|
152
|
+
├── blog
|
|
153
|
+
├── etc
|
|
154
|
+
├── post
|
|
155
|
+
└── widgets
|
|
156
|
+
├── ad
|
|
157
|
+
├── bydates
|
|
158
|
+
├── links
|
|
159
|
+
├── news
|
|
160
|
+
├── pages
|
|
161
|
+
├── pinned
|
|
162
|
+
├── search
|
|
163
|
+
├── sitemap
|
|
164
|
+
└── tag-cloud
|
|
165
|
+
</pre>
|
|
166
|
+
|
|
167
|
+
<pre><b>FIXME add details here</b></pre>
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
.h2 Basics of Livetext
|
|
171
|
+
|
|
172
|
+
<b>TBD</b>
|
|
173
|
+
|
|
174
|
+
<b>Bold, italics, etc.</b>
|
|
175
|
+
single, double, bracketed
|
|
176
|
+
|
|
177
|
+
<b>Common dot commands)
|
|
178
|
+
<pre>
|
|
179
|
+
.debug
|
|
180
|
+
.say
|
|
181
|
+
.nopara
|
|
182
|
+
.quit
|
|
183
|
+
indented dot-commands
|
|
184
|
+
</pre>
|
|
185
|
+
|
|
186
|
+
<b>Using external files</b>
|
|
187
|
+
<pre>
|
|
188
|
+
.mixin
|
|
189
|
+
.include
|
|
190
|
+
.copy
|
|
191
|
+
.seek
|
|
192
|
+
</pre>
|
|
193
|
+
|
|
194
|
+
<b>Predefined functions and variables</b>
|
|
195
|
+
<pre>
|
|
196
|
+
\$File
|
|
197
|
+
`[\$\$date]
|
|
198
|
+
etc.
|
|
199
|
+
</pre>
|
|
200
|
+
|
|
201
|
+
.h2 Runeblog-specific features (Liveblog)</b>
|
|
202
|
+
|
|
203
|
+
<b>TBD</b>
|
|
204
|
+
|
|
205
|
+
<b>Dot commands - the basics</b>
|
|
206
|
+
<pre>
|
|
207
|
+
.mixin liveblog
|
|
208
|
+
.post
|
|
209
|
+
.title
|
|
210
|
+
.views
|
|
211
|
+
.tags
|
|
212
|
+
.teaser
|
|
213
|
+
</pre>
|
|
214
|
+
|
|
215
|
+
<b>Dot commands - more advanced</b>
|
|
216
|
+
<pre>
|
|
217
|
+
.image
|
|
218
|
+
.inset
|
|
219
|
+
.dropcap
|
|
220
|
+
.pin
|
|
221
|
+
</pre>
|
|
222
|
+
|
|
223
|
+
<b>Variables and functions</b>
|
|
224
|
+
<pre>
|
|
225
|
+
\$view, etc.
|
|
226
|
+
\$\$date, \$\$link, etc.
|
|
227
|
+
</pre>
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
.h2 Defining your own features
|
|
231
|
+
|
|
232
|
+
<b>Dot commands, variables, functions</b>
|
|
233
|
+
<pre>
|
|
234
|
+
.def/.end
|
|
235
|
+
.set
|
|
236
|
+
.variables
|
|
237
|
+
.heredoc
|
|
238
|
+
.func
|
|
239
|
+
</pre>
|
|
240
|
+
|
|
241
|
+
<b>Defining these in Ruby</b>
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
.h2 More topics
|
|
245
|
+
|
|
246
|
+
<b>Meta tags, etc.</b>
|
|
247
|
+
<b>CSS</b>
|
|
248
|
+
|
|
249
|
+
<b>Widgets</b>
|
|
250
|
+
<pre>
|
|
251
|
+
pages
|
|
252
|
+
links
|
|
253
|
+
pinned
|
|
254
|
+
faq
|
|
255
|
+
sitemap
|
|
256
|
+
news
|
|
257
|
+
etc.
|
|
258
|
+
</pre>
|
|
259
|
+
|
|
260
|
+
<b>Banner and navbar</b>
|
|
261
|
+
|
|
262
|
+
<b>Creating your own widgets</b>
|
|
263
|
+
|
|
264
|
+
<b>Special tags/functions coming "soon"</b>
|
|
265
|
+
<pre>
|
|
266
|
+
github, gitlab, gist
|
|
267
|
+
wikipedia
|
|
268
|
+
youtube, vimeo
|
|
269
|
+
twitter, instagram
|
|
270
|
+
etc.
|
|
271
|
+
</pre>
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
<b>TBD</b>
|
|
275
|
+
|
|
276
|
+
.h2 More later...
|
|
277
|
+
|
|
278
|
+
<b>TBD</b>
|
|
279
|
+
|
data/README.md
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
<div style="float: left; align: left; vertical-align: bottom">
|
|
2
|
+
<img src="readme/raido4.png" width="210" height="295" align="left"></img>
|
|
3
|
+
</div>
|
|
4
|
+
<h1>runeblog</h1><b>Runeblog</b> is a blogging tool written in Ruby. It has these basic characteristics:
|
|
5
|
+
<ul>
|
|
6
|
+
<li>It is usable entirely in text mode from the terminal</li>
|
|
7
|
+
<li>It publishes web pages as static HTML</li>
|
|
8
|
+
<li>So far, yes, like Jekyll</li>
|
|
9
|
+
<li>It's based on Livetext (highly extensible Ruby-based markup)</li>
|
|
10
|
+
<li>It has the concept of multiple "views" for a blog</li>
|
|
11
|
+
<li>The multiple views are in effect multiple blogs managed with the same backend.</li>
|
|
12
|
+
</ul>
|
|
13
|
+
<p>
|
|
14
|
+
|
|
15
|
+
<p>
|
|
16
|
+
|
|
17
|
+
<p>
|
|
18
|
+
|
|
19
|
+
## What is Livetext?
|
|
20
|
+
Livetext is a markup format that is a throwback to the old, old days of text
|
|
21
|
+
formatters such as <font size=+1><tt>roff</tt></font> It's very flexible, and it is extensible <i>in Ruby</i>.
|
|
22
|
+
<p>
|
|
23
|
+
|
|
24
|
+
It is far from mature or full-featured, but it is usable. Runeblog uses Livetext,
|
|
25
|
+
along with some custom definitions, to try to ease the formatting of a blog entry.
|
|
26
|
+
<p>
|
|
27
|
+
|
|
28
|
+
## What are "views"?
|
|
29
|
+
Think of them as multiple separate blogs with the same backend. Why would you
|
|
30
|
+
want to do this? Maybe you wouldn't, but I do.
|
|
31
|
+
<p>
|
|
32
|
+
|
|
33
|
+
The purpose is to present different "faces" to different audiences. In my case,
|
|
34
|
+
my computing-related stuff would go into one view, and my hometown-related things
|
|
35
|
+
would go into another. There might be a view that only old friends or close friends
|
|
36
|
+
can see. There might be a view purely for reviews of music, books, and movies.
|
|
37
|
+
<p>
|
|
38
|
+
|
|
39
|
+
But the important points are these:
|
|
40
|
+
<p>
|
|
41
|
+
|
|
42
|
+
* <i>All</i> the views will be managed the same way in the same place, and they will all share common data.
|
|
43
|
+
* Any post can easily be included in a single view, in more than one, or in all of them.
|
|
44
|
+
* Each view can have its own look and feel, and it can be linked/published separately from the others.
|
|
45
|
+
* Each view can be hosted in a different location and/or a different server and domain
|
|
46
|
+
* Any post can be in more than one view
|
|
47
|
+
## The <tt>blog</tt> environment
|
|
48
|
+
There is a command-line tool called <font size=+1><tt>blog</tt></font> which is a REPL (read-eval-print loop).
|
|
49
|
+
Note that this tool is a curses-based environment (mainly so it can display menus
|
|
50
|
+
and such to the user).
|
|
51
|
+
<p>
|
|
52
|
+
|
|
53
|
+
The help message looks like this:
|
|
54
|
+
<p>
|
|
55
|
+
|
|
56
|
+
<pre>
|
|
57
|
+
<b>Basics:</b> <b>Views:</b>
|
|
58
|
+
------------------------------------------- -------------------------------------------
|
|
59
|
+
<b>h, help</b> This message <b>change view VIEW</b> Change current view
|
|
60
|
+
<b>q, quit</b> Exit the program <b>cv VIEW</b> Change current view
|
|
61
|
+
<b>v, version</b> Print version information <b>new view</b> Create a new view
|
|
62
|
+
<b>clear</b> Clear screen <b>list views</b> List all views available
|
|
63
|
+
<b>lsv</b> Same as: list views
|
|
64
|
+
<br>
|
|
65
|
+
<b>Posts:</b> <b>Advanced:</b>
|
|
66
|
+
------------------------------------------- -------------------------------------------
|
|
67
|
+
<b>p, post</b> Create a new post <b>config</b> Edit various system files
|
|
68
|
+
<b>new post</b> Same as p, post <b>customize</b> (BUGGY) Change set of tags, extra views
|
|
69
|
+
<b>lsp, list posts</b> List posts in current view <b>preview</b> Look at current (local) view in browser
|
|
70
|
+
<b>lsd, list drafts</b> List all drafts (all views) <b>browse</b> Look at current (published) view in browser
|
|
71
|
+
<b>delete ID [ID...]</b> Remove multiple posts <b>rebuild</b> Regenerate all posts and relink
|
|
72
|
+
<b>undelete ID</b> Undelete a post <b>publish</b> Publish (current view)
|
|
73
|
+
<b>edit ID</b> Edit a post <b>ssh</b> Login to remote server
|
|
74
|
+
<b>import ASSETS</b> Import assets (images, etc.) <b>manage WIDGET</b> Manage content/layout of a widget
|
|
75
|
+
</pre>
|
|
76
|
+
## Getting started
|
|
77
|
+
But when you first run the REPL, it checks for an existing blog repository under
|
|
78
|
+
the <font size=+1><tt>.blogs</tt></font> directory. If it doesn't find one, it asks whether you want to create
|
|
79
|
+
a new blog repo. Enter <font size=+1><tt>y</tt></font> for yes.
|
|
80
|
+
<p>
|
|
81
|
+
|
|
82
|
+
You'll then enter the editor (vim for now) to add configuration info to the <font size=+1><tt>global.lt3</tt></font> file.
|
|
83
|
+
<p>
|
|
84
|
+
|
|
85
|
+
<!-- <pre><b>FIXME add menu screenshot here</b></pre> -->
|
|
86
|
+
<!-- <pre><b>FIXME add vim screenshot here</b></pre> -->
|
|
87
|
+
<img src="readme/vim-global.png" width="494" height="696" align="center"></img>
|
|
88
|
+
<p>
|
|
89
|
+
|
|
90
|
+
The next thing you should do is to create at least one view of your own. Use the <font size=+1><tt>new view</tt></font>
|
|
91
|
+
command for this. Note that the current view is displayed as part of the prompt.
|
|
92
|
+
<p>
|
|
93
|
+
|
|
94
|
+
<pre>
|
|
95
|
+
<b>[no view]</b> new view mystuff<br>
|
|
96
|
+
<b>[mystuff]</b>
|
|
97
|
+
</pre>
|
|
98
|
+
<p>
|
|
99
|
+
|
|
100
|
+
To create a new post, use the <font size=+1><tt>new post</tt></font> command (also abbreviated <font size=+1><tt>post</tt></font> or simply <font size=+1><tt>p</tt></font>). You will be
|
|
101
|
+
prompted for a title:
|
|
102
|
+
<p>
|
|
103
|
+
|
|
104
|
+
<pre>
|
|
105
|
+
<b>[mystuff]</b> new post<br>
|
|
106
|
+
<b>Title:</b> This is my first post
|
|
107
|
+
</pre>
|
|
108
|
+
<p>
|
|
109
|
+
|
|
110
|
+
Then you'll be sent into the editor (currently vim but can be others):
|
|
111
|
+
<p>
|
|
112
|
+
|
|
113
|
+
<img src="readme/edit-first.png" width="506" height="383" align="center"></img>
|
|
114
|
+
<p>
|
|
115
|
+
|
|
116
|
+
<pre>
|
|
117
|
+
<b>FIXME wizard?</b>
|
|
118
|
+
(publishing one-time setup - server, ssh keys, etc.)
|
|
119
|
+
preview...
|
|
120
|
+
publish...
|
|
121
|
+
browse...
|
|
122
|
+
(and so on)
|
|
123
|
+
</pre>
|
|
124
|
+
<p>
|
|
125
|
+
|
|
126
|
+
<b>To be continued</b>
|
|
127
|
+
<p>
|
|
128
|
+
|
|
129
|
+
## Customizing the default templates and configuration
|
|
130
|
+
You can use the <font size=+1><tt>config</tt></font> command to choose a file to edit.
|
|
131
|
+
<p>
|
|
132
|
+
|
|
133
|
+
<img src="readme/config-menu.png" width="700" height="547" align="center"></img>
|
|
134
|
+
<p>
|
|
135
|
+
|
|
136
|
+
The meaning and interaction of these files will be explained later. <b>FIXME</b>
|
|
137
|
+
<p>
|
|
138
|
+
|
|
139
|
+
When you make changes, <font size=+1><tt>rebuild</tt></font> will detect these and regenerate whatever files
|
|
140
|
+
are needed.
|
|
141
|
+
<p>
|
|
142
|
+
|
|
143
|
+
## The directory structure for a view
|
|
144
|
+
<b>Subject to change</b>
|
|
145
|
+
TBD: Add details
|
|
146
|
+
<p>
|
|
147
|
+
|
|
148
|
+
<pre>
|
|
149
|
+
.blogs/views/mystuff/
|
|
150
|
+
├── assets
|
|
151
|
+
├── posts
|
|
152
|
+
├── remote
|
|
153
|
+
│ ├── assets
|
|
154
|
+
│ ├── banner
|
|
155
|
+
│ ├── etc
|
|
156
|
+
│ ├── permalink
|
|
157
|
+
│ └── widgets
|
|
158
|
+
│ ├── ad
|
|
159
|
+
│ ├── links
|
|
160
|
+
│ ├── news
|
|
161
|
+
│ ├── pages
|
|
162
|
+
│ └── pinned
|
|
163
|
+
└── themes
|
|
164
|
+
└── standard
|
|
165
|
+
├── banner
|
|
166
|
+
├── blog
|
|
167
|
+
├── etc
|
|
168
|
+
├── post
|
|
169
|
+
└── widgets
|
|
170
|
+
├── ad
|
|
171
|
+
├── bydates
|
|
172
|
+
├── links
|
|
173
|
+
├── news
|
|
174
|
+
├── pages
|
|
175
|
+
├── pinned
|
|
176
|
+
├── search
|
|
177
|
+
├── sitemap
|
|
178
|
+
└── tag-cloud
|
|
179
|
+
</pre>
|
|
180
|
+
<p>
|
|
181
|
+
|
|
182
|
+
<pre><b>FIXME add details here</b></pre>
|
|
183
|
+
<p>
|
|
184
|
+
|
|
185
|
+
<p>
|
|
186
|
+
|
|
187
|
+
## Basics of Livetext
|
|
188
|
+
<b>TBD</b>
|
|
189
|
+
<p>
|
|
190
|
+
|
|
191
|
+
<b>Bold, italics, etc.</b>
|
|
192
|
+
single, double, bracketed
|
|
193
|
+
<p>
|
|
194
|
+
|
|
195
|
+
<b>Common dot commands)
|
|
196
|
+
<pre>
|
|
197
|
+
.debug
|
|
198
|
+
.say
|
|
199
|
+
.nopara
|
|
200
|
+
.quit
|
|
201
|
+
indented dot-commands
|
|
202
|
+
</pre>
|
|
203
|
+
<p>
|
|
204
|
+
|
|
205
|
+
<b>Using external files</b>
|
|
206
|
+
<pre>
|
|
207
|
+
.mixin
|
|
208
|
+
.include
|
|
209
|
+
.copy
|
|
210
|
+
.seek
|
|
211
|
+
</pre>
|
|
212
|
+
<p>
|
|
213
|
+
|
|
214
|
+
<b>Predefined functions and variables</b>
|
|
215
|
+
<pre>
|
|
216
|
+
$File
|
|
217
|
+
<font size=+1><tt></tt></font>
|
|
218
|
+
etc.
|
|
219
|
+
</pre>
|
|
220
|
+
<p>
|
|
221
|
+
|
|
222
|
+
## Runeblog-specific features (Liveblog)</b>
|
|
223
|
+
<b>TBD</b>
|
|
224
|
+
<p>
|
|
225
|
+
|
|
226
|
+
<b>Dot commands - the basics</b>
|
|
227
|
+
<pre>
|
|
228
|
+
.mixin liveblog
|
|
229
|
+
.post
|
|
230
|
+
.title
|
|
231
|
+
.views
|
|
232
|
+
.tags
|
|
233
|
+
.teaser
|
|
234
|
+
</pre>
|
|
235
|
+
<p>
|
|
236
|
+
|
|
237
|
+
<b>Dot commands - more advanced</b>
|
|
238
|
+
<pre>
|
|
239
|
+
.image
|
|
240
|
+
.inset
|
|
241
|
+
.dropcap
|
|
242
|
+
.pin
|
|
243
|
+
</pre>
|
|
244
|
+
<p>
|
|
245
|
+
|
|
246
|
+
<b>Variables and functions</b>
|
|
247
|
+
<pre>
|
|
248
|
+
$view, etc.
|
|
249
|
+
$\[date is undefined], $\[link is undefined], etc.
|
|
250
|
+
</pre>
|
|
251
|
+
<p>
|
|
252
|
+
|
|
253
|
+
<p>
|
|
254
|
+
|
|
255
|
+
## Defining your own features
|
|
256
|
+
<b>Dot commands, variables, functions</b>
|
|
257
|
+
<pre>
|
|
258
|
+
.def/.end
|
|
259
|
+
.set
|
|
260
|
+
.variables
|
|
261
|
+
.heredoc
|
|
262
|
+
.func
|
|
263
|
+
</pre>
|
|
264
|
+
<p>
|
|
265
|
+
|
|
266
|
+
<b>Defining these in Ruby</b>
|
|
267
|
+
<p>
|
|
268
|
+
|
|
269
|
+
<p>
|
|
270
|
+
|
|
271
|
+
## More topics
|
|
272
|
+
<b>Meta tags, etc.</b>
|
|
273
|
+
<b>CSS</b>
|
|
274
|
+
<p>
|
|
275
|
+
|
|
276
|
+
<b>Widgets</b>
|
|
277
|
+
<pre>
|
|
278
|
+
pages
|
|
279
|
+
links
|
|
280
|
+
pinned
|
|
281
|
+
faq
|
|
282
|
+
sitemap
|
|
283
|
+
news
|
|
284
|
+
etc.
|
|
285
|
+
</pre>
|
|
286
|
+
<p>
|
|
287
|
+
|
|
288
|
+
<b>Banner and navbar</b>
|
|
289
|
+
<p>
|
|
290
|
+
|
|
291
|
+
<b>Creating your own widgets</b>
|
|
292
|
+
<p>
|
|
293
|
+
|
|
294
|
+
<b>Special tags/functions coming "soon"</b>
|
|
295
|
+
<pre>
|
|
296
|
+
github, gitlab, gist
|
|
297
|
+
wikipedia
|
|
298
|
+
youtube, vimeo
|
|
299
|
+
twitter, instagram
|
|
300
|
+
etc.
|
|
301
|
+
</pre>
|
|
302
|
+
<p>
|
|
303
|
+
|
|
304
|
+
<p>
|
|
305
|
+
|
|
306
|
+
<b>TBD</b>
|
|
307
|
+
<p>
|
|
308
|
+
|
|
309
|
+
## More later...
|
|
310
|
+
<b>TBD</b>
|
|
311
|
+
<p>
|
|
312
|
+
|