runeblog 0.2.34 → 0.2.39
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/empty_view/assets/sky2.jpg +0 -0
- data/empty_view/remote/assets/GIT_IS_DUMB +1 -0
- data/empty_view/remote/etc/GIT_IS_DUMB +1 -0
- data/empty_view/remote/navbar/GIT_IS_DUMB +1 -0
- data/empty_view/remote/permalink/GIT_IS_DUMB +1 -0
- data/empty_view/remote/widgets/links/list.data +3 -0
- data/empty_view/remote/widgets/news/list.data +4 -0
- data/empty_view/remote/widgets/pages/list.data +4 -0
- data/empty_view/themes/standard/README +59 -0
- data/empty_view/themes/standard/blog/generate.lt3 +37 -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 +22 -0
- data/empty_view/themes/standard/etc/blog.css.lt3 +43 -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 +8 -0
- data/empty_view/themes/standard/global.lt3 +35 -0
- data/empty_view/themes/standard/navbar/about.lt3 +18 -0
- data/empty_view/themes/standard/navbar/contact.lt3 +18 -0
- data/empty_view/themes/standard/navbar/navbar.lt3 +16 -0
- data/empty_view/themes/standard/post/generate.lt3 +30 -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 +15 -0
- data/empty_view/themes/standard/widgets/calendar/calendar.lt3 +6 -0
- data/empty_view/themes/standard/widgets/links/links.lt3 +2 -0
- data/empty_view/themes/standard/widgets/links/list.data +3 -0
- data/empty_view/themes/standard/widgets/news/list.data +4 -0
- data/empty_view/themes/standard/widgets/news/news.lt3 +2 -0
- data/empty_view/themes/standard/widgets/pages/README +2 -0
- data/empty_view/themes/standard/widgets/pages/disclaim.lt3 +10 -0
- data/empty_view/themes/standard/widgets/pages/faq.lt3 +9 -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/other-stuff.lt3 +10 -0
- data/empty_view/themes/standard/widgets/pages/pages.lt3 +2 -0
- data/empty_view/themes/standard/widgets/pages/pages.rb +21 -0
- data/empty_view/themes/standard/widgets/pages/pieces/card-head.lt3 +1 -0
- data/empty_view/themes/standard/widgets/pages/pieces/card-tail.lt3 +1 -0
- data/empty_view/themes/standard/widgets/pages/pieces/card.css +1 -0
- data/empty_view/themes/standard/widgets/pages/pieces/main-head.lt3 +8 -0
- data/empty_view/themes/standard/widgets/pages/pieces/main-tail.lt3 +2 -0
- data/empty_view/themes/standard/widgets/pages/pieces/main.css +1 -0
- data/empty_view/themes/standard/widgets/tag-cloud/tag-cloud.lt3 +12 -0
- data/lib/helpers-repl.rb +4 -2
- data/lib/liveblog.rb +61 -7
- data/lib/publish.rb +0 -10
- data/lib/repl.rb +34 -21
- data/lib/runeblog.rb +4 -7
- data/lib/runeblog_version.rb +1 -1
- data/lib/view.rb +1 -1
- data/lib/xlate.rb +5 -0
- data/runeblog.gemspec +2 -2
- data/test/general_test.rb +0 -1
- metadata +49 -2
- data/empty_view.tgz +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: caacbdabded61281f3fd6cab3f627a5b014e896381f2b73e070f0aa64630b4d7
|
4
|
+
data.tar.gz: e1d37b1f874ef57568d710ab90a93977491327b40d140987f9a120ad87fb4642
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed10a449202c4ca21d228d11eea08aa6c65693c3dd9e81498a368b0a362f341726a141fc878e31c7cf07573c1858d6aa70cdbb08fcb29043d62cd734153dffe3
|
7
|
+
data.tar.gz: a95f146d7bb55ae8a115f495423c0287453e8cdb0335c3615c5cfae4d77c842cb417bc1f763d972f2b241d6ac7f463e3b823be1789bb5b026f49745680b261d2
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
meh
|
@@ -0,0 +1 @@
|
|
1
|
+
meh
|
@@ -0,0 +1 @@
|
|
1
|
+
meh
|
@@ -0,0 +1 @@
|
|
1
|
+
meh
|
@@ -0,0 +1,4 @@
|
|
1
|
+
https://techcrunch.com/2019/09/16/fossa-scores-8-5-million-series-a-to-help-enterprise-manage-open-source-licenses/, yes, FOSSA scores \$8.5 million Series A to help enterprise manage open-source licenses
|
2
|
+
https://techcrunch.com/2019/09/17/spacexs-orbital-starship-prototype-construction-progress-detailed-in-new-photos/, yes, SpaceX’s orbital Starship prototype construction progress detailed in new photos
|
3
|
+
https://developers.googleblog.com/2019/05/Flutter-io19.html, yes, Flutter: a Portable UI Framework for Mobile, Web, Embedded, and Desktop
|
4
|
+
https://jaycarlson.net/microcontrollers/, no, The Amazing \$1 Microcontroller (2017)
|
@@ -0,0 +1,59 @@
|
|
1
|
+
New structure:
|
2
|
+
|
3
|
+
themes/standard The first "default theme" - more later
|
4
|
+
├── README This file
|
5
|
+
├── assets Assets (images/videos/etc) for entire view
|
6
|
+
├── banner Top banner for the view
|
7
|
+
├── blog All files/info for view
|
8
|
+
│ ├── generate.lt3 Generate index.html from wrapper (rarely edited)
|
9
|
+
│ ├── head.lt3 Header info for index.html
|
10
|
+
│ ├── index.lt3 "Guts" of view (user-edited, wrapped by generate.lt3)
|
11
|
+
│ └── post_entry.lt3
|
12
|
+
├── etc
|
13
|
+
│ ├── blog.css
|
14
|
+
│ ├── externals.lt3
|
15
|
+
│ ├── global.lt3
|
16
|
+
│ └── favicon.ico
|
17
|
+
├── navbar
|
18
|
+
│ ├── about.html
|
19
|
+
│ └── navbar.lt3
|
20
|
+
├── pages
|
21
|
+
├── post
|
22
|
+
│ ├── generate.lt3
|
23
|
+
│ ├── head.lt3
|
24
|
+
│ ├── index.lt3
|
25
|
+
│ └── permalink.lt3
|
26
|
+
└── sidebar
|
27
|
+
├── ad.lt3
|
28
|
+
├── calendar.lt3
|
29
|
+
├── news.lt3
|
30
|
+
└── tag-cloud.lt3
|
31
|
+
|
32
|
+
|
33
|
+
Old structure:
|
34
|
+
|
35
|
+
templates The first "default theme" - more later
|
36
|
+
├── README This file
|
37
|
+
├── about.html An "about" file (will move)
|
38
|
+
├── assets Assets for entire view (blog)
|
39
|
+
│ ├── application.css "Global" CSS
|
40
|
+
│ ├── favicon.ico Favicon
|
41
|
+
│ └── ... Other files later, images, etc.
|
42
|
+
├── blog ** The whole template for this view (blog)
|
43
|
+
│ ├── _postentry.lt3 Used repeatedly in list of blog posts
|
44
|
+
│ ├── generate.lt3 The "main wrapper" that actually generates everything
|
45
|
+
│ ├── index.lt3 The main "user editable" portion of the template
|
46
|
+
│ ├── navbar.lt3 The navigation bar
|
47
|
+
│ └── sidebar The sidebar (which may include different things)
|
48
|
+
│ ├── ad.lt3 Code to generate an advertisement
|
49
|
+
│ ├── calendar.lt3 Code for a calendar
|
50
|
+
│ ├── news.lt3 Recent news
|
51
|
+
│ └── tag-cloud.lt3 Tag cloud (generated automatically of course)
|
52
|
+
├── global.lt3 Some global settings (MOVED TO etc)
|
53
|
+
├── head.lt3 A standard <head> section
|
54
|
+
├── meta.lt3 Standard meta tags
|
55
|
+
└── post
|
56
|
+
├── head.lt3 Specific to post (adds to higher-level head)
|
57
|
+
├── generate.lt3 The "main wrapper" that actually generates the post
|
58
|
+
└── index.lt3 The main "user editable" portion of the post template
|
59
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This file will usually not be edited by the user.
|
3
|
+
. It is used to generate the top-level index.html
|
4
|
+
. The user will more often edit blog/index.lt3 in
|
5
|
+
. the process of blog setup.
|
6
|
+
. --------------------------------------------------
|
7
|
+
|
8
|
+
.mixin liveblog
|
9
|
+
|
10
|
+
<html>
|
11
|
+
<!-- Generated from $File on $$date. Editing not recommended. -->
|
12
|
+
|
13
|
+
.seek global.lt3
|
14
|
+
.include blog/head.lt3
|
15
|
+
<body>
|
16
|
+
|
17
|
+
. FIXME
|
18
|
+
<table width=100%>
|
19
|
+
<tr>
|
20
|
+
<td width=30% bgcolor=black>
|
21
|
+
<div style="text-align: center; color: white">
|
22
|
+
<h1>Around Austin</h1><br>
|
23
|
+
The view from downtown...
|
24
|
+
</div>
|
25
|
+
</td>
|
26
|
+
<td><img src=assets/sky2.jpg width=100%></img>
|
27
|
+
</tr>
|
28
|
+
</table>
|
29
|
+
|
30
|
+
$.include navbar/navbar.lt3
|
31
|
+
<div class="content container-fluid mt-4">
|
32
|
+
<div class="row">
|
33
|
+
$.include blog/index.lt3
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</body>
|
37
|
+
</html>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This file will usually not be edited by the user.
|
3
|
+
. It is used to generate the <HEAD> for the overall
|
4
|
+
. blog and for the individual post.
|
5
|
+
. SUBJECT TO CHANGE, like everything else but moreso
|
6
|
+
. --------------------------------------------------
|
7
|
+
|
8
|
+
<head>
|
9
|
+
.include etc/externals.lt3
|
10
|
+
.include etc/misc.js
|
11
|
+
|
12
|
+
. fix/remove later
|
13
|
+
.head
|
14
|
+
.end
|
15
|
+
|
16
|
+
</head>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This file describes the actual layout of the blog.
|
3
|
+
. It is referenced from blog/generate.lt3
|
4
|
+
. --------------------------------------------------
|
5
|
+
|
6
|
+
. figure out how to put navbar here
|
7
|
+
|
8
|
+
.recent_posts
|
9
|
+
|
10
|
+
.sidebar
|
11
|
+
ad
|
12
|
+
links
|
13
|
+
news
|
14
|
+
pages
|
15
|
+
tag-cloud
|
16
|
+
.end
|
17
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This HTML fragment gives the format of a post's
|
3
|
+
. "index" entry (recent posts on blog front page).
|
4
|
+
. --------------------------------------------------
|
5
|
+
|
6
|
+
<div class="post">
|
7
|
+
<table width=100%>
|
8
|
+
<tr>
|
9
|
+
<td width=12% valign=top>
|
10
|
+
<span class="post-date mt-1 mb-1">
|
11
|
+
<b>#{date}</b>
|
12
|
+
</span>
|
13
|
+
</td>
|
14
|
+
<td> <!-- <span class="post-title-box"> -->
|
15
|
+
<span class="post-title-text"><a href="#{url}">#{title}</a></span>
|
16
|
+
<b>#{teaser_text}</b>
|
17
|
+
<br>
|
18
|
+
<a style="text-decoration: none" href="#{url}"><small>Keep reading...</small></a></p> <!-- </span> -->
|
19
|
+
</td>
|
20
|
+
</tr>
|
21
|
+
</table>
|
22
|
+
</div>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This file is processed to create blog.css
|
3
|
+
. Most of the global CSS goes here
|
4
|
+
. --------------------------------------------------
|
5
|
+
.nopara
|
6
|
+
|
7
|
+
.seek themes/standard/global.lt3
|
8
|
+
|
9
|
+
* { font-family: $font.family }
|
10
|
+
|
11
|
+
\.post-title a {
|
12
|
+
color: $post.title.color;
|
13
|
+
font-size: $post.title.size;
|
14
|
+
float: right;
|
15
|
+
display: inline-block;
|
16
|
+
text-align: top;
|
17
|
+
text-decoration: none;
|
18
|
+
}
|
19
|
+
|
20
|
+
\.post-title a:hover {
|
21
|
+
text-decoration: none;
|
22
|
+
}
|
23
|
+
|
24
|
+
\.post-title-text a {
|
25
|
+
color: $post.text.color;
|
26
|
+
font-size: $post.text.size;
|
27
|
+
# float: right;
|
28
|
+
display: block;
|
29
|
+
text-decoration: none;
|
30
|
+
}
|
31
|
+
|
32
|
+
\.post-title-text a:hover {
|
33
|
+
text-decoration: none;
|
34
|
+
}
|
35
|
+
|
36
|
+
\.post-date {
|
37
|
+
color: $post.date.color;
|
38
|
+
font-size: $post.date.size;
|
39
|
+
display: block;
|
40
|
+
float: left;
|
41
|
+
text-align: top;
|
42
|
+
}
|
43
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. External JS and CSS resources (Bootstrap, etc.)
|
3
|
+
. are defined here
|
4
|
+
. --------------------------------------------------
|
5
|
+
|
6
|
+
.stylesheet
|
7
|
+
https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css
|
8
|
+
sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T
|
9
|
+
.end
|
10
|
+
|
11
|
+
.script
|
12
|
+
https://code.jquery.com/jquery-3.3.1.slim.min.js
|
13
|
+
sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo
|
14
|
+
.end
|
15
|
+
|
16
|
+
.script
|
17
|
+
https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js
|
18
|
+
sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1
|
19
|
+
.end
|
20
|
+
|
21
|
+
.script
|
22
|
+
https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js
|
23
|
+
sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM
|
24
|
+
.end
|
Binary file
|
@@ -0,0 +1,35 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. Global settings are stored here in the form
|
3
|
+
. <variable> <value>
|
4
|
+
. --------------------------------------------------
|
5
|
+
|
6
|
+
.variables
|
7
|
+
author Your name here
|
8
|
+
blog Blog title goes here
|
9
|
+
blog.desc Subtitle (if any) goes here
|
10
|
+
site rubyhacker.com
|
11
|
+
|
12
|
+
host localhost:4000//
|
13
|
+
charset utf-8
|
14
|
+
url localhost:4000//
|
15
|
+
locale en_US
|
16
|
+
|
17
|
+
font.family verdana
|
18
|
+
|
19
|
+
post.title.color #010101
|
20
|
+
post.title.size 28px
|
21
|
+
|
22
|
+
post.text.color #0101a1
|
23
|
+
post.text.size 22px
|
24
|
+
|
25
|
+
post.date.color #9a9a9a
|
26
|
+
post.date.size 15px
|
27
|
+
|
28
|
+
|
29
|
+
publish.user root
|
30
|
+
publish.server rubyhacker.com
|
31
|
+
publish.docroot /var/www/
|
32
|
+
publish.path around_austin
|
33
|
+
publish.proto http
|
34
|
+
.end
|
35
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This is a sample file typical of page referenced
|
3
|
+
. directly from the navigation bar.
|
4
|
+
. It is like a special case of a page in the "pages"
|
5
|
+
. widget.
|
6
|
+
. --------------------------------------------------
|
7
|
+
|
8
|
+
.set this.title="About me"
|
9
|
+
. make this better later
|
10
|
+
<html><body>
|
11
|
+
<div class="content container-fluid mt-4">
|
12
|
+
<div class="row">
|
13
|
+
<h1>$this.title</h1>
|
14
|
+
. content starts here...
|
15
|
+
Blah blah blah...
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</body></html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This is a sample file typical of page referenced
|
3
|
+
. directly from the navigation bar.
|
4
|
+
. It is like a special case of a page in the "pages"
|
5
|
+
. widget.
|
6
|
+
. --------------------------------------------------
|
7
|
+
|
8
|
+
.set this.title="Contact"
|
9
|
+
. make this better later
|
10
|
+
<html><body>
|
11
|
+
<div class="content container-fluid mt-4">
|
12
|
+
<div class="row">
|
13
|
+
<h1>$this.title</h1>
|
14
|
+
. content starts here...
|
15
|
+
How to contact me by email, smoke signals, ICBM, seance, ...
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</body></html>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This defines the content of the navigation bar.
|
3
|
+
. The first one is a special case.
|
4
|
+
. The others are understood to refer to .lt3 files
|
5
|
+
. such as navbar/about.lt3 (which is processed into
|
6
|
+
. HTML).
|
7
|
+
. The title may be more than one word. Quotes are
|
8
|
+
. not needed.
|
9
|
+
. --------------------------------------------------
|
10
|
+
|
11
|
+
.navbar
|
12
|
+
index Home
|
13
|
+
about About
|
14
|
+
contact Contact
|
15
|
+
.end
|
16
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This is used to generate a single post.
|
3
|
+
. The logic behind it is convoluted and may be
|
4
|
+
. subject to change.
|
5
|
+
. --------------------------------------------------
|
6
|
+
|
7
|
+
.mixin liveblog
|
8
|
+
|
9
|
+
<html>
|
10
|
+
<!-- Editing this file is not recommended. -->
|
11
|
+
<!-- It was generated from $File on $$date. -->
|
12
|
+
|
13
|
+
.seek global.lt3
|
14
|
+
.include vars.lt3
|
15
|
+
|
16
|
+
.head
|
17
|
+
og:title $title
|
18
|
+
description $teaser
|
19
|
+
.end
|
20
|
+
|
21
|
+
<section class="post">
|
22
|
+
<div class="entry-content">
|
23
|
+
$.copy guts.html
|
24
|
+
</div>
|
25
|
+
</section>
|
26
|
+
|
27
|
+
<br>
|
28
|
+
<a href="javascript:history.go(-1)">[Back]</a>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. This file is overwritten and customized as the
|
3
|
+
. blog is maintained.
|
4
|
+
. Currently there is no user-friendly way to change
|
5
|
+
. the "skeleton" of a post. When there is, this will
|
6
|
+
. likely be the place.
|
7
|
+
. --------------------------------------------------
|
8
|
+
|
9
|
+
.mixin liveblog
|
10
|
+
. ^ get rid of this later
|
11
|
+
|
12
|
+
.post 0
|
13
|
+
|
14
|
+
.title The new amphitheatre is overrated
|
15
|
+
.pubdate 2019-07-09
|
16
|
+
.views around_austin
|
17
|
+
.tags
|
18
|
+
|
19
|
+
.teaser
|
20
|
+
It used to be that all major concerts played the Erwin Center.
|
21
|
+
|
22
|
+
.end
|
23
|
+
Now, depending on what you consider "major," blah blah blah...
|
24
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
. --------------------------------------------------
|
2
|
+
. A permalink differs very little from the original
|
3
|
+
. post except that it lacks "context" (navigation
|
4
|
+
. bar, banner, sidebar, etc.).
|
5
|
+
. It does have a link back to the current front page
|
6
|
+
. of the blog.
|
7
|
+
. --------------------------------------------------
|
8
|
+
|
9
|
+
.mixin liveblog
|
10
|
+
|
11
|
+
<html>
|
12
|
+
<!-- Editing this file is not recommended. -->
|
13
|
+
<!-- It was generated from $File on $$date. -->
|
14
|
+
|
15
|
+
.seek global.lt3
|
16
|
+
.include vars.lt3
|
17
|
+
|
18
|
+
.head
|
19
|
+
og:title $title
|
20
|
+
description $teaser
|
21
|
+
.end
|
22
|
+
|
23
|
+
<section class="post">
|
24
|
+
<div class="entry-content">
|
25
|
+
$.copy guts.html
|
26
|
+
</div>
|
27
|
+
</section>
|
28
|
+
|
29
|
+
<br>
|
30
|
+
<a href="../index.html" style="text-decoration: none">[Home: $blog]</a>
|
31
|
+
</body>
|
32
|
+
</html>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
. In real life, ads won't work this way...
|
2
|
+
|
3
|
+
.set classname="btn btn-light float-right"
|
4
|
+
.set card.title="Advertisement"
|
5
|
+
.set card.text="Build your amazing website with blabla.com."
|
6
|
+
.set extra="bg-dark text-white"
|
7
|
+
|
8
|
+
<div class="card $extra mb-3">
|
9
|
+
<div class="card-body">
|
10
|
+
<h5 class="card-title">$card.title</h5>
|
11
|
+
<p class="card-text">$card.text</p>
|
12
|
+
<a href="javascript: void(0)" onclick="javascript:open_main('widgets/ad/ad.html')" class="$classname">Visit page</a>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
|
@@ -0,0 +1,4 @@
|
|
1
|
+
https://techcrunch.com/2019/09/16/fossa-scores-8-5-million-series-a-to-help-enterprise-manage-open-source-licenses/, yes, FOSSA scores \$8.5 million Series A to help enterprise manage open-source licenses
|
2
|
+
https://techcrunch.com/2019/09/17/spacexs-orbital-starship-prototype-construction-progress-detailed-in-new-photos/, yes, SpaceX’s orbital Starship prototype construction progress detailed in new photos
|
3
|
+
https://developers.googleblog.com/2019/05/Flutter-io19.html, yes, Flutter: a Portable UI Framework for Mobile, Web, Embedded, and Desktop
|
4
|
+
https://jaycarlson.net/microcontrollers/, no, The Amazing \$1 Microcontroller (2017)
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Custom code for 'pages' widget
|
2
|
+
|
3
|
+
# How to update repl code?
|
4
|
+
|
5
|
+
class ::RuneBlog::Widget
|
6
|
+
class Pages
|
7
|
+
def self.build
|
8
|
+
children = Dir["*.lt3"] - ["pages.lt3"]
|
9
|
+
children.each do |child|
|
10
|
+
dest = child.sub(/.lt3$/, ".html")
|
11
|
+
xlate src: child, dst: dest, debug: true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.edit_menu
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.refresh
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
.mixin liveblog
|
2
|
+
|
3
|
+
.tag_cloud
|
4
|
+
https://google.com/,btn btn-dark m-1,Programming
|
5
|
+
https://google.com/,btn btn-danger m-1,Science Fiction
|
6
|
+
https://google.com/,btn btn-light m-1,Art
|
7
|
+
https://google.com/,btn btn-dark m-1,Robotics
|
8
|
+
https://google.com/,btn btn-warning m-1,Food and Travel
|
9
|
+
https://google.com/,btn btn-light m-1,DIY Hacks
|
10
|
+
https://google.com/,btn btn-info m-1,Surfing
|
11
|
+
.end
|
12
|
+
|
data/lib/helpers-repl.rb
CHANGED
@@ -40,7 +40,9 @@ module RuneBlog::REPL
|
|
40
40
|
"list assets" => :cmd_list_assets,
|
41
41
|
"lsa" => :cmd_list_assets,
|
42
42
|
|
43
|
-
"
|
43
|
+
"pages" => :cmd_pages,
|
44
|
+
|
45
|
+
"delete >postid" => :cmd_remove_post,
|
44
46
|
"undel $postid" => :cmd_undelete_post,
|
45
47
|
|
46
48
|
"edit $postid" => :cmd_edit_post,
|
@@ -103,7 +105,7 @@ module RuneBlog::REPL
|
|
103
105
|
end
|
104
106
|
meth = found || :cmd_INVALID
|
105
107
|
params = cmd if meth == :cmd_INVALID
|
106
|
-
puts "choose: #{[meth, params].inspect}"
|
108
|
+
# puts "choose: #{[meth, params].inspect}"
|
107
109
|
[meth, params]
|
108
110
|
end
|
109
111
|
|
data/lib/liveblog.rb
CHANGED
@@ -319,6 +319,21 @@ def recent_posts # side-effect
|
|
319
319
|
HTML
|
320
320
|
end
|
321
321
|
|
322
|
+
def _load_local(widget)
|
323
|
+
Dir.chdir("widgets/#{widget}") do
|
324
|
+
# STDERR.puts "loadCP1 widget = #{widget.inspect} pwd = #{Dir.pwd}"
|
325
|
+
found = (require("./#{widget}") if File.exist?("#{widget}.rb"))
|
326
|
+
# STDERR.puts "loadCP2 found = #{found}"
|
327
|
+
code = found ? ::RuneBlog::Widget.class_eval(widget.capitalize) : nil
|
328
|
+
# STDERR.puts "loadCP3 code = #{code.inspect}"
|
329
|
+
code
|
330
|
+
end
|
331
|
+
rescue => err
|
332
|
+
STDOUT.puts err
|
333
|
+
STDOUT.puts err.backtrace.join("\n")
|
334
|
+
exit
|
335
|
+
end
|
336
|
+
|
322
337
|
def sidebar
|
323
338
|
if _args.include? "off"
|
324
339
|
_body { } # iterate, do nothing
|
@@ -331,17 +346,25 @@ def sidebar
|
|
331
346
|
wtag = :widgets/tag
|
332
347
|
raise "Can't find #{wtag}" unless Dir.exist?(wtag)
|
333
348
|
tcard = "#{tag}-card.html"
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
349
|
+
|
350
|
+
code = _load_local(tag)
|
351
|
+
code && Dir.chdir(wtag) { code.build }
|
352
|
+
|
353
|
+
# if File.exist?(wtag/"SUBFILES")
|
354
|
+
# children = Dir[wtag/"*.lt3"] - [wtag/tag+".lt3"]
|
355
|
+
# children.each do |child|
|
356
|
+
# dest = child.sub(/.lt3$/, ".html")
|
357
|
+
# xlate src: child, dst: dest # , debug: true
|
358
|
+
# end
|
359
|
+
# end
|
341
360
|
xlate cwd: wtag, src: tag, dst: tcard # , debug: true
|
342
361
|
_include_file wtag/tcard
|
343
362
|
end
|
344
363
|
_out %[</div>]
|
364
|
+
rescue => err
|
365
|
+
puts "err = #{err}"
|
366
|
+
puts err.backtrace.join("\n")
|
367
|
+
exit
|
345
368
|
end
|
346
369
|
|
347
370
|
def stylesheet
|
@@ -606,9 +629,40 @@ def page_type(tag, title)
|
|
606
629
|
end
|
607
630
|
end
|
608
631
|
|
632
|
+
def _write_main_pages(mainfile, pairs, card_title, tag)
|
633
|
+
local = _local_tag?(tag)
|
634
|
+
pieces = @blog.view.dir/"themes/standard/widgets"/tag/:pieces
|
635
|
+
main_head = xlate! cwd: pieces, src: "main-head.lt3"
|
636
|
+
main_tail = xlate! cwd: pieces, src: "main-tail.lt3"
|
637
|
+
# ^ make into methods in pages.rb or whatever?
|
638
|
+
|
639
|
+
File.open("#{mainfile}.html", "w") do |f|
|
640
|
+
f.puts main_head
|
641
|
+
pairs.each do |file, title|
|
642
|
+
type, title = page_type(tag, title)
|
643
|
+
title = title.gsub(/\\/, "") # kludge
|
644
|
+
case type
|
645
|
+
when :local; url_ref = _widget_main(file, tag) # local always frameable
|
646
|
+
when :frame; url_ref = "href = '#{file}'" # local always frameable
|
647
|
+
when :noframe; url_ref = _blank(file) # local always frameable
|
648
|
+
end
|
649
|
+
css = "color: #8888FF; text-decoration: none; font-size: 24px; font-family: verdana"
|
650
|
+
f.puts %[<a style="#{css}" #{url_ref}>#{title}</a> <br>]
|
651
|
+
end
|
652
|
+
f.puts main_tail
|
653
|
+
end
|
654
|
+
end
|
655
|
+
|
609
656
|
def _write_main(mainfile, pairs, card_title, tag)
|
610
657
|
log!(str: "Creating #{mainfile}.html", pwd: true)
|
658
|
+
|
659
|
+
if tag == "pages" # temporary experiment
|
660
|
+
_write_main_pages(mainfile, pairs, card_title, tag)
|
661
|
+
return
|
662
|
+
end
|
663
|
+
|
611
664
|
local = _local_tag?(tag)
|
665
|
+
setvar "card.title", card_title
|
612
666
|
File.open("#{mainfile}.html", "w") do |f|
|
613
667
|
_html_body(f) do
|
614
668
|
f.puts "<h1>#{card_title}</h1>"
|
data/lib/publish.rb
CHANGED
@@ -10,16 +10,6 @@ class RuneBlog::Publishing
|
|
10
10
|
def initialize(view)
|
11
11
|
log!(enter: __method__, args: [view.to_s])
|
12
12
|
@blog = RuneBlog.blog
|
13
|
-
# # Clunky...
|
14
|
-
# if params.size == 1 && params[0].is_a?(OpenStruct)
|
15
|
-
# obj = params[0]
|
16
|
-
# array = obj.to_h.values_at(:user, :server, :docroot,
|
17
|
-
# :path, :proto)
|
18
|
-
# @user, @server, @docroot, @path, @proto = *array
|
19
|
-
# else
|
20
|
-
# @user, @server, @docroot, @path, @proto = *params
|
21
|
-
# end
|
22
|
-
# find a better way?
|
23
13
|
gfile = @blog.root/:views/view/"themes/standard/global.lt3"
|
24
14
|
data = File.readlines(gfile)
|
25
15
|
grab = ->(var) { data.grep(/^#{var} /).first.chomp.split(" ", 2)[1] }
|
data/lib/repl.rb
CHANGED
@@ -36,28 +36,40 @@ module RuneBlog::REPL
|
|
36
36
|
@out
|
37
37
|
end
|
38
38
|
|
39
|
-
def
|
39
|
+
def cmd_pages(arg, testing = false)
|
40
40
|
check_empty(arg)
|
41
|
-
dir = @blog.view.dir
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
41
|
+
dir = @blog.view.dir/"themes/standard/widgets/pages"
|
42
|
+
# Assume child files already generated (and list.data??)
|
43
|
+
data = dir/"list.data"
|
44
|
+
lines = File.readlines(data)
|
45
|
+
hash = {}
|
46
|
+
lines.each do |line|
|
47
|
+
url, name = line.chomp.split(",")
|
48
|
+
source = url.sub(/.html$/, ".lt3")
|
49
|
+
hash[name] = source
|
50
|
+
end
|
51
|
+
new_item = "[New page]"
|
52
|
+
num, fname = STDSCR.menu(title: "Edit page:", items: hash.keys + [new_item])
|
53
|
+
return if fname.nil?
|
54
|
+
if fname == new_item
|
55
|
+
print "Page title: "
|
56
|
+
title = RubyText.gets
|
57
|
+
title.chomp!
|
58
|
+
print "File name (.lt3): "
|
59
|
+
fname = RubyText.gets
|
60
|
+
fname << ".lt3" unless fname.end_with?(".lt3")
|
61
|
+
fhtml = fname.sub(/.lt3$/, ".html")
|
62
|
+
File.open(data, "a") {|f| f.puts "#{fhtml},#{title}" }
|
63
|
+
new_file = dir/fname
|
64
|
+
File.open(new_file, "w") do |f|
|
65
|
+
f.puts "<h1>#{title}</h1>\n\n\n "
|
66
|
+
f.puts ".backlink"
|
67
|
+
end
|
68
|
+
edit_file(new_file)
|
69
|
+
else
|
70
|
+
target = hash[fname]
|
71
|
+
edit_file(dir/target)
|
72
|
+
end
|
61
73
|
end
|
62
74
|
|
63
75
|
def cmd_import(arg, testing = false)
|
@@ -143,6 +155,7 @@ module RuneBlog::REPL
|
|
143
155
|
n = viewnames.find_index(@blog.view.name)
|
144
156
|
name = @blog.view.name
|
145
157
|
k, name = STDSCR.menu(title: "Views", items: viewnames, curr: n) unless testing
|
158
|
+
return if name.nil?
|
146
159
|
@blog.view = name
|
147
160
|
output name + "\n"
|
148
161
|
puts "\n ", fx(name, :bold), "\n" unless testing
|
data/lib/runeblog.rb
CHANGED
@@ -60,7 +60,6 @@ class RuneBlog
|
|
60
60
|
raise BlogRepoAlreadyExists if Dir.exist?(root)
|
61
61
|
create_dirs(root)
|
62
62
|
Dir.chdir(root) do
|
63
|
-
system!("cp #{RuneBlog::Path}/../empty_view.tgz .")
|
64
63
|
create_dirs(:drafts, :views, :posts)
|
65
64
|
new_sequence
|
66
65
|
end
|
@@ -218,7 +217,7 @@ class RuneBlog
|
|
218
217
|
|
219
218
|
def mark_last_published(str)
|
220
219
|
log!(enter: __method__, args: [str])
|
221
|
-
dump(str, "last_published")
|
220
|
+
dump(str, "#{self.view.dir}/last_published")
|
222
221
|
end
|
223
222
|
|
224
223
|
def add_view(view_name)
|
@@ -232,10 +231,8 @@ class RuneBlog
|
|
232
231
|
def make_empty_view_tree(view_name)
|
233
232
|
log!(enter: __method__, args: [view_name])
|
234
233
|
Dir.chdir(@root) do
|
235
|
-
|
236
|
-
|
237
|
-
system!(cmd1)
|
238
|
-
system!(cmd2)
|
234
|
+
cmd = "cp -r #{RuneBlog::Path}/../empty_view views/#{view_name}"
|
235
|
+
system!(cmd)
|
239
236
|
end
|
240
237
|
end
|
241
238
|
|
@@ -255,8 +252,8 @@ class RuneBlog
|
|
255
252
|
log!(enter: __method__, args: [view_name])
|
256
253
|
check_valid_new_view(view_name)
|
257
254
|
make_empty_view_tree(view_name)
|
258
|
-
mark_last_published("Initial creation")
|
259
255
|
add_view(view_name)
|
256
|
+
mark_last_published("Initial creation")
|
260
257
|
end
|
261
258
|
|
262
259
|
def delete_view(name, force = false)
|
data/lib/runeblog_version.rb
CHANGED
data/lib/view.rb
CHANGED
data/lib/xlate.rb
CHANGED
@@ -35,3 +35,8 @@ LEXT = ".lt3"
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
def xlate!(cwd: Dir.pwd, src:, copy: nil, debug: false, force: false)
|
39
|
+
output = "/tmp/xlate-#{File.basename(src).sub(/.lt3$/, "")}"
|
40
|
+
xlate cwd: cwd, src: src, dst: output, debug: debug, force: force
|
41
|
+
File.read(output + ".html") # return all content as string
|
42
|
+
end
|
data/runeblog.gemspec
CHANGED
@@ -28,10 +28,10 @@ spec = Gem::Specification.new do |s|
|
|
28
28
|
Find.find("lib").to_a
|
29
29
|
test = Find.find("test").to_a
|
30
30
|
misc = %w[./README.lt3 ./README.md ./runeblog.gemspec]
|
31
|
+
empty_view = Find.find("empty_view").to_a
|
31
32
|
|
32
|
-
# system("tar zcvf empty_view.tgz empty_view")
|
33
33
|
|
34
|
-
s.files = main + misc + test +
|
34
|
+
s.files = main + misc + test + empty_view
|
35
35
|
s.homepage = 'https://github.com/Hal9000/runeblog'
|
36
36
|
s.license = "Ruby"
|
37
37
|
end
|
data/test/general_test.rb
CHANGED
@@ -27,7 +27,6 @@ class TestREPL < Minitest::Test
|
|
27
27
|
def setup
|
28
28
|
# To be strictly correct in testing (though slower),
|
29
29
|
# run make_blog here.
|
30
|
-
# system("tar zcvf last-test.tgz .blog/ && rm -rf .blog")
|
31
30
|
system("ruby test/make_blog.rb") if ARGV.first == "new"
|
32
31
|
@blog = RuneBlog.new
|
33
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: runeblog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.39
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
@@ -61,7 +61,54 @@ files:
|
|
61
61
|
- "./README.md"
|
62
62
|
- "./runeblog.gemspec"
|
63
63
|
- bin/blog
|
64
|
-
- empty_view.
|
64
|
+
- empty_view/assets/sky2.jpg
|
65
|
+
- empty_view/remote/assets/GIT_IS_DUMB
|
66
|
+
- empty_view/remote/etc/GIT_IS_DUMB
|
67
|
+
- empty_view/remote/navbar/GIT_IS_DUMB
|
68
|
+
- empty_view/remote/permalink/GIT_IS_DUMB
|
69
|
+
- empty_view/remote/widgets/links/list.data
|
70
|
+
- empty_view/remote/widgets/news/list.data
|
71
|
+
- empty_view/remote/widgets/pages/list.data
|
72
|
+
- empty_view/themes/standard/README
|
73
|
+
- empty_view/themes/standard/blog/generate.lt3
|
74
|
+
- empty_view/themes/standard/blog/head.lt3
|
75
|
+
- empty_view/themes/standard/blog/index.lt3
|
76
|
+
- empty_view/themes/standard/blog/post_entry.lt3
|
77
|
+
- empty_view/themes/standard/etc/blog.css.lt3
|
78
|
+
- empty_view/themes/standard/etc/externals.lt3
|
79
|
+
- empty_view/themes/standard/etc/favicon.ico
|
80
|
+
- empty_view/themes/standard/etc/misc.js
|
81
|
+
- empty_view/themes/standard/global.lt3
|
82
|
+
- empty_view/themes/standard/navbar/about.lt3
|
83
|
+
- empty_view/themes/standard/navbar/contact.lt3
|
84
|
+
- empty_view/themes/standard/navbar/navbar.lt3
|
85
|
+
- empty_view/themes/standard/post/generate.lt3
|
86
|
+
- empty_view/themes/standard/post/head.lt3
|
87
|
+
- empty_view/themes/standard/post/index.lt3
|
88
|
+
- empty_view/themes/standard/post/permalink.lt3
|
89
|
+
- empty_view/themes/standard/widgets/README
|
90
|
+
- empty_view/themes/standard/widgets/ad/ad.lt3
|
91
|
+
- empty_view/themes/standard/widgets/calendar/calendar.lt3
|
92
|
+
- empty_view/themes/standard/widgets/links/links.lt3
|
93
|
+
- empty_view/themes/standard/widgets/links/list.data
|
94
|
+
- empty_view/themes/standard/widgets/news/list.data
|
95
|
+
- empty_view/themes/standard/widgets/news/news.lt3
|
96
|
+
- empty_view/themes/standard/widgets/pages/README
|
97
|
+
- empty_view/themes/standard/widgets/pages/disclaim.lt3
|
98
|
+
- empty_view/themes/standard/widgets/pages/faq.lt3
|
99
|
+
- empty_view/themes/standard/widgets/pages/like-dislike.lt3
|
100
|
+
- empty_view/themes/standard/widgets/pages/list.data
|
101
|
+
- empty_view/themes/standard/widgets/pages/local.rb
|
102
|
+
- empty_view/themes/standard/widgets/pages/other-stuff.lt3
|
103
|
+
- empty_view/themes/standard/widgets/pages/pages.lt3
|
104
|
+
- empty_view/themes/standard/widgets/pages/pages.rb
|
105
|
+
- empty_view/themes/standard/widgets/pages/pieces/card-head.lt3
|
106
|
+
- empty_view/themes/standard/widgets/pages/pieces/card-tail.lt3
|
107
|
+
- empty_view/themes/standard/widgets/pages/pieces/card.css
|
108
|
+
- empty_view/themes/standard/widgets/pages/pieces/main-head.lt3
|
109
|
+
- empty_view/themes/standard/widgets/pages/pieces/main-tail.lt3
|
110
|
+
- empty_view/themes/standard/widgets/pages/pieces/main.css
|
111
|
+
- empty_view/themes/standard/widgets/tag-cloud/tag-cloud.lt3
|
65
112
|
- lib/Javascript.stuff
|
66
113
|
- lib/default.rb
|
67
114
|
- lib/global.rb
|
data/empty_view.tgz
DELETED
Binary file
|