runeblog 0.2.34 → 0.2.39
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 +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
|