runeblog 0.3.02
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|