runeblog 0.2.95 → 0.3.02
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/blog +16 -12
- data/data/features.txt +18 -0
- data/data/global.lt3 +6 -21
- data/data/universal.lt3 +2 -5
- data/empty_view/config/facebook/credentials.txt +7 -0
- data/empty_view/config/facebook/facebook.rb +12 -7
- data/empty_view/config/facebook/{fb.js → fb.js.lt3} +5 -3
- data/empty_view/config/reddit/{config.txt → credentials.txt} +0 -0
- data/empty_view/config/reddit/reddit_post_url.py +1 -1
- data/empty_view/config/reddit/the-graffiti-wall.html +2 -2
- data/empty_view/config/twitter/credentials.txt +3 -0
- data/empty_view/config/twitter/twitter.rb +3 -3
- data/empty_view/remote/banner/navbar/GIT_IS_DUMB +0 -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/banner/top.lt3 +2 -2
- data/empty_view/themes/standard/blog/post_entry.lt3 +1 -1
- data/empty_view/themes/standard/etc/blog.css.lt3 +12 -12
- data/empty_view/themes/standard/post/generate.lt3 +2 -2
- data/empty_view/themes/standard/post/permalink.lt3 +1 -1
- data/lib/helpers-blog.rb +17 -13
- data/lib/liveblog.rb +17 -10
- data/lib/processing.rb +12 -2
- data/lib/publish.rb +11 -10
- data/lib/repl.rb +46 -3
- data/lib/runeblog.rb +98 -40
- data/lib/runeblog_version.rb +1 -1
- data/lib/view.rb +2 -0
- data/runeblog.gemspec +1 -1
- data/test/austin.rb +9 -11
- metadata +16 -9
- data/empty_view/themes/standard/global.lt3 +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af242702c47c1cad260040a42b4fe58f5fb84e83934bfa80e0f12fd3e7083c9c
|
4
|
+
data.tar.gz: 90b1d17454ce166e5c89b1c8ed6cc43f129a708a14200b94a1bb5c2a5a721a7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a70f36f01ebdfc94db5b6794b8975b876b0255b154d8393d87e7728f19010c478daaa93462cbb21aa0bee539c4d4a922640d8c92f7f3707538974d5cbe60f65d
|
7
|
+
data.tar.gz: 50d5b646a4fa6e050f0aedb2789371c61fd5115ce35d03051b3ce690f113b47182782951ac8a6e7742bbf1316e7791fcccfd653d2d67911bf75b4bf3e62ae4a6
|
data/bin/blog
CHANGED
@@ -25,12 +25,14 @@ end
|
|
25
25
|
def get_universal
|
26
26
|
univ = "#{@blog.root}/data/universal.lt3"
|
27
27
|
if yesno("Faster initial setup? (no: edit universal.lt3)")
|
28
|
-
author = ask!("Author name: ")
|
29
|
-
site = ask!("Site/domain: ")
|
28
|
+
author = ask!(" Author name: ")
|
29
|
+
site = ask!(" Site/domain: ")
|
30
30
|
# Now stash it...
|
31
31
|
str = File.read(univ)
|
32
32
|
str = str.gsub(/AUTHOR/, author)
|
33
33
|
str = str.gsub(/SITE_DOMAIN/, site)
|
34
|
+
File.write(univ, str)
|
35
|
+
# STDERR.puts "------ universal ------\n#{`cat #{univ}`}\n------------------------"
|
34
36
|
else
|
35
37
|
vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(AUTHOR.*\|SITE.*\)"'
|
36
38
|
edit_file(univ, vim: vim_params)
|
@@ -39,18 +41,20 @@ end
|
|
39
41
|
|
40
42
|
def get_global
|
41
43
|
if yesno("Faster view setup? (no: edit global.lt3)")
|
42
|
-
view_name = ask!("\
|
44
|
+
view_name = ask!("\n Filename: ")
|
43
45
|
@blog.create_view(view_name) # call change_view??
|
44
|
-
title = ask!("View title: ")
|
45
|
-
subtitle = ask!("Subtitle : ")
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
title = ask!(" View title: ")
|
47
|
+
subtitle = ask!(" Subtitle : ")
|
48
|
+
domain = ask!(" Domain : ")
|
49
|
+
|
50
|
+
vfile = "#{@blog.root}/views/#{view_name}/settings/view.txt"
|
51
|
+
hash = {/VIEW_NAME/ => view_name,
|
52
|
+
/VIEW_TITLE/ => title,
|
53
|
+
/VIEW_SUBTITLE/ => subtitle,
|
54
|
+
/VIEW_DOMAIN/ => domain}
|
55
|
+
@blog.complete_file(vfile, nil, hash)
|
52
56
|
else
|
53
|
-
view_name = ask!("\
|
57
|
+
view_name = ask!("\n Filename: ")
|
54
58
|
@blog.create_view(view_name) # call change_view??
|
55
59
|
vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
|
56
60
|
edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
|
data/data/features.txt
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# 0 = disabled (installed but disabled)
|
2
|
+
# 1 = enabled (implies installed)
|
3
|
+
# x = excluded (not installed; does it even exist?)
|
4
|
+
|
5
|
+
reddit 1 # autopost, embed thread after blog post
|
6
|
+
facebook 0 # reader-like, reader post, autopost?
|
7
|
+
twitter 0 # reader-tweet, reader-follow, autotweet?
|
8
|
+
|
9
|
+
links 1 # widget: external links
|
10
|
+
news 1 # widget: news (external)
|
11
|
+
pages 1 # widget: internal pages
|
12
|
+
pinned 1 # widget: pinned posts
|
13
|
+
|
14
|
+
ad x # widget: embed advertising
|
15
|
+
bydates x # widget: browse posts by date
|
16
|
+
search x # widget: search posts
|
17
|
+
sitemap x # widget: site map
|
18
|
+
tag_cloud x # widget: tag cloud (clickable)
|
data/data/global.lt3
CHANGED
@@ -3,33 +3,18 @@
|
|
3
3
|
. <variable> <value>
|
4
4
|
. --------------------------------------------------
|
5
5
|
|
6
|
-
.variables
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
.variables view ../../settings/view.txt
|
7
|
+
|
8
|
+
.variables recent ../../settings/recent.txt
|
9
|
+
|
10
|
+
.variables publish ../../settings/publish.txt
|
11
11
|
|
12
|
+
.variables
|
12
13
|
host http://SITE
|
13
14
|
charset utf-8
|
14
15
|
url http://SITE
|
15
16
|
locale en_US
|
16
17
|
|
17
18
|
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 SITE
|
31
|
-
publish.docroot /var/www/
|
32
|
-
publish.path VIEW_NAME
|
33
|
-
publish.proto http
|
34
19
|
.end
|
35
20
|
|
data/data/universal.lt3
CHANGED
@@ -2,20 +2,25 @@ class Livetext::Functions
|
|
2
2
|
|
3
3
|
def facebook_init
|
4
4
|
fb_appid = _var("facebook.appid")
|
5
|
+
xfbml = _var("facebook.xfbml")
|
6
|
+
ver = _var("facebook.version")
|
7
|
+
width = _var("facebook.width")
|
8
|
+
share = _var("facebook.share")
|
9
|
+
faces = _var("facebook.faces")
|
5
10
|
<<~HTML
|
6
11
|
window.fbAsyncInit = function() {
|
7
12
|
FB.init({
|
8
13
|
appId : '#{fb_appid}',
|
9
|
-
xfbml :
|
10
|
-
version : '
|
14
|
+
xfbml : #{xfbml},
|
15
|
+
version : '#{ver}'
|
11
16
|
});
|
12
17
|
};
|
13
18
|
HTML
|
14
19
|
end
|
15
20
|
|
16
21
|
=begin
|
17
|
-
<!-- Needed:
|
18
|
-
<meta property='fb:admins' content='
|
22
|
+
<!-- Needed:
|
23
|
+
<meta property='fb:admins' content='$facebook.admins'/>
|
19
24
|
<meta property='og:url' content='http://rubyhacker.com/blog2/#{slug}.html'/>
|
20
25
|
<meta property='og:type' content='article'/>
|
21
26
|
<meta property='og:title' content='#{title}'/>
|
@@ -27,9 +32,9 @@ class Livetext::Functions
|
|
27
32
|
def facebook_likes
|
28
33
|
<<~HTML
|
29
34
|
<div class='fb-like'
|
30
|
-
data-share='
|
31
|
-
data-width='
|
32
|
-
data-show-faces='
|
35
|
+
data-share='#{share}'
|
36
|
+
data-width='#{width}'
|
37
|
+
data-show-faces='#{faces}'>
|
33
38
|
</div>
|
34
39
|
HTML
|
35
40
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
.variables facebook credentials.txt
|
2
|
+
|
1
3
|
<script>
|
2
4
|
window.fbAsyncInit = function() {
|
3
5
|
FB.init({
|
4
|
-
appId : '
|
5
|
-
xfbml :
|
6
|
-
version : '
|
6
|
+
appId : '$facebook.appid',
|
7
|
+
xfbml : $facebook.xfbml,
|
8
|
+
version : '$facebook.ver'
|
7
9
|
});
|
8
10
|
};
|
9
11
|
|
File without changes
|
@@ -25,9 +25,9 @@
|
|
25
25
|
<body>
|
26
26
|
|
27
27
|
<section class="post">
|
28
|
-
<div class="
|
28
|
+
<div class="recent-content">
|
29
29
|
<table border=0 width=100%><tr>
|
30
|
-
<td align=left valign=bottom><h2 class="
|
30
|
+
<td align=left valign=bottom><h2 class="recent-title">The graffiti wall</h2></td>
|
31
31
|
<td align=right valign=top><font size=-5><br></font>December 2, 2019</td>
|
32
32
|
</tr></table><hr>
|
33
33
|
<!-- Post number 3 -->
|
@@ -13,8 +13,8 @@ class Livetext::Functions
|
|
13
13
|
-->
|
14
14
|
=end
|
15
15
|
|
16
|
-
def twitter_share
|
17
|
-
name
|
16
|
+
def twitter_share(title, url)
|
17
|
+
name = _var("twitter.user")
|
18
18
|
<<~HTML
|
19
19
|
<a href='https://twitter.com/share'
|
20
20
|
class='twitter-share-button'
|
@@ -26,7 +26,7 @@ class Livetext::Functions
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def twitter_follow
|
29
|
-
name = "
|
29
|
+
name = _var("twitter.user")
|
30
30
|
<<~HTML
|
31
31
|
<a href='https://twitter.com/#{name}' class='twitter-follow-button' data-show-count='false'>Follow @#{name}</a>
|
32
32
|
HTML
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# 0 = disabled (installed but disabled)
|
2
|
+
# 1 = enabled (implies installed)
|
3
|
+
# x = excluded (not installed; does it even exist?)
|
4
|
+
|
5
|
+
reddit 1 # autopost, embed thread after blog post
|
6
|
+
facebook 0 # reader-like, reader post, autopost?
|
7
|
+
twitter 0 # reader-tweet, reader-follow, autotweet?
|
8
|
+
|
9
|
+
links 1 # widget: external links
|
10
|
+
news 1 # widget: news (external)
|
11
|
+
pages 1 # widget: internal pages
|
12
|
+
pinned 1 # widget: pinned posts
|
13
|
+
|
14
|
+
ad x # widget: embed advertising
|
15
|
+
bydates x # widget: browse posts by date
|
16
|
+
search x # widget: search posts
|
17
|
+
sitemap x # widget: site map
|
18
|
+
tag_cloud x # widget: tag cloud (clickable)
|
@@ -15,6 +15,6 @@
|
|
15
15
|
|
16
16
|
<rect x="20" y="20" rx="15" ry="15" width="98%" height="100" fill="url(#grad1)"/>
|
17
17
|
|
18
|
-
<text x="45" y="70" class=heavy>$
|
19
|
-
<text x="45" y="98" class=small>$
|
18
|
+
<text x="45" y="70" class=heavy>$view.title</text>
|
19
|
+
<text x="45" y="98" class=small>$view.subtitle</text>
|
20
20
|
</svg>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<font size=-1>#{date}</font>
|
11
11
|
</td>
|
12
12
|
<td>
|
13
|
-
<span class="
|
13
|
+
<span class="recent-title-text"><a href="#{url}" style="margin-top: -5px">#{title}</a></span>
|
14
14
|
<b>#{teaser_text}</b>
|
15
15
|
<a style="text-decoration: none" href="#{url}"><small>Keep reading</small></a>
|
16
16
|
</td>
|
@@ -3,40 +3,40 @@
|
|
3
3
|
. Most of the global CSS goes here
|
4
4
|
. --------------------------------------------------
|
5
5
|
|
6
|
-
.seek
|
6
|
+
.seek global.lt3
|
7
7
|
|
8
8
|
body { font-family: $font.family }
|
9
9
|
|
10
|
-
\.
|
11
|
-
color: $
|
10
|
+
\.recent-title a {
|
11
|
+
color: $recent.title.color;
|
12
12
|
font-family: $font.family;
|
13
|
-
font-size: $
|
13
|
+
font-size: $recent.title.size;
|
14
14
|
float: right;
|
15
15
|
display: inline-block;
|
16
16
|
text-align: top;
|
17
17
|
text-decoration: none;
|
18
18
|
}
|
19
19
|
|
20
|
-
\.
|
20
|
+
\.recent-title a:hover {
|
21
21
|
text-decoration: none;
|
22
22
|
}
|
23
23
|
|
24
|
-
\.
|
25
|
-
color: $
|
24
|
+
\.recent-title-text a {
|
25
|
+
color: $recent.text.color;
|
26
26
|
font-family: $font.family;
|
27
|
-
font-size: $
|
27
|
+
font-size: $recent.text.size;
|
28
28
|
display: block;
|
29
29
|
text-decoration: none;
|
30
30
|
}
|
31
31
|
|
32
|
-
\.
|
32
|
+
\.recent-title-text a:hover {
|
33
33
|
text-decoration: none;
|
34
34
|
}
|
35
35
|
|
36
|
-
\.
|
37
|
-
color: $
|
36
|
+
\.recent-date {
|
37
|
+
color: $recent.date.color;
|
38
38
|
font-family: $font.family;
|
39
|
-
font-size: $
|
39
|
+
font-size: $recent.date.size;
|
40
40
|
display: block;
|
41
41
|
float: left;
|
42
42
|
text-align: top;
|
@@ -22,9 +22,9 @@ style blog.css
|
|
22
22
|
<body>
|
23
23
|
|
24
24
|
<section class="post">
|
25
|
-
<div class="
|
25
|
+
<div class="recent-content">
|
26
26
|
<table border=0 width=100%><tr>
|
27
|
-
<td align=left valign=bottom><h2 class="
|
27
|
+
<td align=left valign=bottom><h2 class="recent-title">$title</h2></td>
|
28
28
|
<td align=right valign=top><font size=-5><br></font>$longdate</td>
|
29
29
|
</tr></table><hr>
|
30
30
|
$.copy guts.html
|
data/lib/helpers-blog.rb
CHANGED
@@ -14,6 +14,18 @@ module RuneBlog::Helpers
|
|
14
14
|
exit
|
15
15
|
end
|
16
16
|
|
17
|
+
def read_features
|
18
|
+
hash = {}
|
19
|
+
file = @root/self.view/"settings/features.txt"
|
20
|
+
lines = File.readlines(file)
|
21
|
+
lines.each do |line|
|
22
|
+
char, line = line[0], line[1..-1].chomp
|
23
|
+
name = line.strip
|
24
|
+
hash[name] = (char != "-")
|
25
|
+
end
|
26
|
+
@features = hash
|
27
|
+
end
|
28
|
+
|
17
29
|
def get_repo_config
|
18
30
|
log!(enter: __method__, level: 3)
|
19
31
|
@editor = File.read(".blogs/data/EDITOR").chomp
|
@@ -33,8 +45,8 @@ module RuneBlog::Helpers
|
|
33
45
|
when :config
|
34
46
|
files = %w[ROOT VIEW EDITOR universal.lt3 global.lt3]
|
35
47
|
files.each {|file| copy(data + "/" + file, dest) }
|
36
|
-
when :extra
|
37
|
-
copy!(extra, dest)
|
48
|
+
when :extra # FIXME remove later
|
49
|
+
# copy!(extra, dest)
|
38
50
|
end
|
39
51
|
end
|
40
52
|
|
@@ -47,14 +59,15 @@ module RuneBlog::Helpers
|
|
47
59
|
line = line.strip
|
48
60
|
next if skip.include?(line[0])
|
49
61
|
key, val = line.split(" ", 2)
|
50
|
-
|
62
|
+
next if key.nil?
|
63
|
+
hash[key] = hash[key.to_sym] = val
|
51
64
|
end
|
52
65
|
hash
|
53
66
|
rescue => err
|
54
67
|
puts "Can't read vars file '#{file}': #{err}"
|
55
68
|
puts err.backtrace.join("\n")
|
56
69
|
puts "dir = #{Dir.pwd}"
|
57
|
-
stop_RubyText
|
70
|
+
stop_RubyText rescue nil
|
58
71
|
end
|
59
72
|
|
60
73
|
def read_config(file, *syms)
|
@@ -111,15 +124,6 @@ module RuneBlog::Helpers
|
|
111
124
|
File.write(root + "/data/EDITOR", editor + "\n")
|
112
125
|
end
|
113
126
|
|
114
|
-
# def new_dotfile(root: ".blogs", current_view: "test_view", editor: "vi")
|
115
|
-
# log!(enter: __method__, args: [root, current_view, editor], level: 3)
|
116
|
-
# root = Dir.pwd + "/" + root
|
117
|
-
# x = OpenStruct.new
|
118
|
-
# x.root, x.current_view, x.editor = root, current_view, editor
|
119
|
-
# write_config(x, root + "/" + RuneBlog::ConfigFile)
|
120
|
-
# write_repo_config
|
121
|
-
# end
|
122
|
-
|
123
127
|
def new_sequence
|
124
128
|
log!(enter: __method__, level: 3)
|
125
129
|
dump(0, "data/sequence")
|
data/lib/liveblog.rb
CHANGED
@@ -72,7 +72,7 @@ def post_trailer
|
|
72
72
|
tags = _var("post.tags")
|
73
73
|
taglist = tags.empty? ? "" : "Tags: #{tags}"
|
74
74
|
|
75
|
-
reddit_enabled =
|
75
|
+
reddit_enabled = @blog.features["reddit"] rescue nil
|
76
76
|
reddit_txt = ""
|
77
77
|
if reddit_enabled
|
78
78
|
vdir = @blog.root/:views/@blog.view
|
@@ -241,8 +241,8 @@ def _svg_title(*args)
|
|
241
241
|
.subtitle { font: #{style2} #{size2} #{font2}; fill: #{color2} }
|
242
242
|
</style>
|
243
243
|
<rect x="10" y="10" rx="10" ry="10" width="#{width}" height="#{height}" fill="url(#grad1)"/>
|
244
|
-
<text text-anchor="#{align}" x="#{x}" y="#{y}" class="title">#{Livetext::Vars[
|
245
|
-
<text text-anchor="#{align2}" x="#{x2}" y="#{y2}" class="subtitle">#{Livetext::Vars["
|
244
|
+
<text text-anchor="#{align}" x="#{x}" y="#{y}" class="title">#{Livetext::Vars["view.title"]} </text>
|
245
|
+
<text text-anchor="#{align2}" x="#{x2}" y="#{y2}" class="subtitle">#{Livetext::Vars["view.subtitle"]} </text>
|
246
246
|
</svg>
|
247
247
|
<!-- ^ how does syntax highlighting get messed up? </svg> -->
|
248
248
|
HTML
|
@@ -275,6 +275,13 @@ def h6; _passthru "
#{@_data}"; end |
|
275
275
|
|
276
276
|
def hr; _passthru "<hr>"; end
|
277
277
|
|
278
|
+
def nlist
|
279
|
+
_out "<ol>"
|
280
|
+
_body {|line| _out "<li>#{line}</li>" }
|
281
|
+
_out "</ol>"
|
282
|
+
_optional_blank_line
|
283
|
+
end
|
284
|
+
|
278
285
|
def list
|
279
286
|
_out "<ul>"
|
280
287
|
_body {|line| _out "<li>#{line}</li>" }
|
@@ -439,18 +446,18 @@ def head # Does NOT output tags
|
|
439
446
|
defaults = {}
|
440
447
|
defaults = { "charset" => %[<meta charset="utf-8">],
|
441
448
|
"http-equiv" => %[<meta http-equiv="X-UA-Compatible" content="IE=edge">],
|
442
|
-
"title" => %[<title>\n #{_var(
|
449
|
+
"title" => %[<title>\n #{_var("view.title")} | #{_var("view.subtitle")}\n </title>],
|
443
450
|
"generator" => %[<meta name="generator" content="Runeblog v #@version">],
|
444
|
-
"og:title" => %[<meta property="og:title" content="#{_var(
|
451
|
+
"og:title" => %[<meta property="og:title" content="#{_var("view.title")}">],
|
445
452
|
"og:locale" => %[<meta property="og:locale" content="#{_var(:locale)}">],
|
446
|
-
"description" => %[<meta name="description" content="#{_var("
|
447
|
-
"og:description" => %[<meta property="og:description" content="#{_var("
|
453
|
+
"description" => %[<meta name="description" content="#{_var("view.subtitle")}">],
|
454
|
+
"og:description" => %[<meta property="og:description" content="#{_var("view.subtitle")}">],
|
448
455
|
"linkc" => %[<link rel="canonical" href="#{_var(:host)}">],
|
449
456
|
"og:url" => %[<meta property="og:url" content="#{_var(:host)}">],
|
450
|
-
"og:site_name" => %[<meta property="og:site_name" content="#{_var(
|
457
|
+
"og:site_name" => %[<meta property="og:site_name" content="#{_var("view.title")}">],
|
451
458
|
# "style" => %[<link rel="stylesheet" href="etc/blog.css">],
|
452
459
|
# ^ FIXME
|
453
|
-
"feed" => %[<link type="application/atom+xml" rel="alternate" href="#{_var(:host)}/feed.xml" title="#{_var(
|
460
|
+
"feed" => %[<link type="application/atom+xml" rel="alternate" href="#{_var(:host)}/feed.xml" title="#{_var("view.title")}">],
|
454
461
|
"favicon" => %[<link rel="shortcut icon" type="image/x-icon" href="etc/favicon.ico">\n <link rel="apple-touch-icon" href="etc/favicon.ico">]
|
455
462
|
}
|
456
463
|
result = {}
|
@@ -682,7 +689,7 @@ end
|
|
682
689
|
|
683
690
|
def _make_navbar(orient = :horiz)
|
684
691
|
vdir = @root/:views/@blog.view
|
685
|
-
title = _var(
|
692
|
+
title = _var("view.title")
|
686
693
|
|
687
694
|
if orient == :horiz
|
688
695
|
name = "navbar.html"
|
data/lib/processing.rb
CHANGED
@@ -21,11 +21,15 @@ def stale?(src, dst, deps, force = false)
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def preprocess(cwd: Dir.pwd, src:,
|
24
|
-
dst:
|
24
|
+
dst: nil, strip: false,
|
25
25
|
deps: [], copy: nil, debug: false, force: false,
|
26
26
|
mix: [], call: [], vars: {})
|
27
27
|
src += LEXT unless src.end_with?(LEXT)
|
28
|
-
|
28
|
+
if strip
|
29
|
+
dst = File.basename(src).sub(/.lt3$/,"")
|
30
|
+
else
|
31
|
+
dst += ".html" unless dst.end_with?(".html")
|
32
|
+
end
|
29
33
|
sp = " "*12
|
30
34
|
Dir.chdir(cwd) do
|
31
35
|
if debug
|
@@ -47,4 +51,10 @@ def preprocess(cwd: Dir.pwd, src:,
|
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
54
|
+
def get_live_vars(src)
|
55
|
+
live = Livetext.customize(call: [".nopara"])
|
56
|
+
live.xform_file(src)
|
57
|
+
live
|
58
|
+
end
|
59
|
+
|
50
60
|
end
|
data/lib/publish.rb
CHANGED
@@ -3,26 +3,27 @@ if ! defined?(Already_publish)
|
|
3
3
|
Already_publish = nil
|
4
4
|
|
5
5
|
require 'pathmagic'
|
6
|
+
require 'processing'
|
6
7
|
|
7
8
|
class RuneBlog::Publishing
|
8
9
|
attr_reader :user, :server, :docroot, :path
|
9
10
|
|
10
|
-
|
11
11
|
BadRemoteLogin = Exception.new("Can't login remotely")
|
12
12
|
BadRemotePerms = Exception.new("Bad remote permissions")
|
13
13
|
|
14
14
|
def initialize(view)
|
15
15
|
log!(enter: __method__, args: [view.to_s])
|
16
16
|
@blog = RuneBlog.blog
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@
|
23
|
-
@
|
24
|
-
@
|
25
|
-
@
|
17
|
+
dir = @blog.root/:views/view/"themes/standard/"
|
18
|
+
gfile = dir/"global.lt3"
|
19
|
+
return unless File.exist?(gfile) # FIXME Hackish as hell
|
20
|
+
|
21
|
+
live = get_live_vars(gfile)
|
22
|
+
@user = live.vars["publish.user"]
|
23
|
+
@server = live.vars["publish.server"]
|
24
|
+
@docroot = live.vars["publish.docroot"]
|
25
|
+
@path = live.vars["publish.path"]
|
26
|
+
@proto = live.vars["publish.proto"]
|
26
27
|
end
|
27
28
|
|
28
29
|
def to_h
|
data/lib/repl.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'runeblog'
|
2
2
|
require 'ostruct'
|
3
3
|
require 'helpers-repl' # FIXME structure
|
4
|
+
require 'pathmagic'
|
4
5
|
|
5
6
|
make_exception(:PublishError, "Error during publishing")
|
6
7
|
make_exception(:EditorProblem, "Could not edit $1")
|
@@ -37,7 +38,7 @@ module RuneBlog::REPL
|
|
37
38
|
@out
|
38
39
|
end
|
39
40
|
|
40
|
-
def
|
41
|
+
def OLD_cmd_config(arg, testing = false)
|
41
42
|
hash = {"global.lt3 Global configuration" => "global.lt3",
|
42
43
|
"banner/top.lt3 Text portion of banner" => "banner/top.lt3",
|
43
44
|
"blog/generate.lt3 Generator for view (usu not edited)" => "blog/generate.lt3",
|
@@ -58,6 +59,32 @@ module RuneBlog::REPL
|
|
58
59
|
edit_file(dir/target)
|
59
60
|
end
|
60
61
|
|
62
|
+
def cmd_config(arg, testing = false)
|
63
|
+
hash = {"Global configuration" => "global.lt3",
|
64
|
+
" View-specific variables" => "../../settings/view.txt",
|
65
|
+
" Recent posts" => "../../settings/recent.txt",
|
66
|
+
" Publishing vars" => "../../settings/publish.txt",
|
67
|
+
"Banner description" => "blog/banner.lt3",
|
68
|
+
" Text portion of banner" => "banner/top.lt3",
|
69
|
+
"Generator for view (usu not edited)" => "blog/generate.lt3",
|
70
|
+
" HEAD info for view" => "blog/head.lt3",
|
71
|
+
" User-edited detail for view" => "blog/index.lt3",
|
72
|
+
"Generator for post entry in recent-posts" => "blog/post_entry.lt3",
|
73
|
+
"Global CSS" => "etc/blog.css.lt3",
|
74
|
+
"External JS/CSS (Bootstrap, etc.)" => "/etc/externals.lt3",
|
75
|
+
"Generator for a post" => "post/generate.lt3",
|
76
|
+
" HEAD info for post" => "post/head.lt3",
|
77
|
+
" Content for post" => "post/index.lt3",
|
78
|
+
"Generator for permalink" => "post/permalink.lt3",
|
79
|
+
}
|
80
|
+
|
81
|
+
dir = @blog.view.dir/"themes/standard/"
|
82
|
+
num, target = STDSCR.menu(title: "Edit file:", items: hash)
|
83
|
+
edit_file(dir/target)
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
|
61
88
|
def cmd_manage(arg, testing = false)
|
62
89
|
case arg
|
63
90
|
when "pages"; _manage_pages(nil, testing = false)
|
@@ -378,10 +405,15 @@ module RuneBlog::REPL
|
|
378
405
|
v = v.to_s
|
379
406
|
v = fx(v, :bold) if v == @blog.view.name
|
380
407
|
output v + "\n"
|
381
|
-
|
408
|
+
# FIXME: next 3 lines are crufty as hell
|
409
|
+
lines = File.readlines(@blog.root/"views/#{v}/themes/standard/global.lt3")
|
410
|
+
lines = lines.select {|x| x =~ /^blog / && x !~ /VIEW_/ }
|
411
|
+
title = lines.first.split(" ", 2)[1]
|
412
|
+
print " ", ('%15s' % v) unless testing
|
413
|
+
puts " ", fx(title, :black) unless testing
|
382
414
|
end
|
383
415
|
puts unless testing
|
384
|
-
|
416
|
+
# @out
|
385
417
|
end
|
386
418
|
|
387
419
|
def cmd_list_posts(arg, testing = false)
|
@@ -400,6 +432,12 @@ module RuneBlog::REPL
|
|
400
432
|
base = post.sub(/.lt3$/, "")
|
401
433
|
num, rest = base[0..3], base[4..-1]
|
402
434
|
puts " ", fx(num, Red), fx(rest, Blue) unless testing
|
435
|
+
draft = @blog.root/:drafts/post + ".lt3"
|
436
|
+
other = @blog._get_views(draft) - [@blog.view.to_s]
|
437
|
+
unless other.empty?
|
438
|
+
print fx(" "*7 + "also in: ", :bold)
|
439
|
+
puts other.join(", ")
|
440
|
+
end
|
403
441
|
end
|
404
442
|
end
|
405
443
|
puts unless testing
|
@@ -420,6 +458,11 @@ module RuneBlog::REPL
|
|
420
458
|
base = draft.sub(/.lt3$/, "")
|
421
459
|
num, rest = base[0..3], base[4..-1]
|
422
460
|
puts " ", fx(num, Red), fx(rest, Blue) unless testing
|
461
|
+
other = @blog._get_views(@blog.root/:drafts/draft) - [@blog.view.to_s]
|
462
|
+
unless other.empty?
|
463
|
+
print fx(" "*7 + "also in: ", :bold)
|
464
|
+
puts other.join(", ")
|
465
|
+
end
|
423
466
|
end
|
424
467
|
end
|
425
468
|
puts unless testing
|
data/lib/runeblog.rb
CHANGED
@@ -40,7 +40,7 @@ class RuneBlog
|
|
40
40
|
end
|
41
41
|
|
42
42
|
attr_reader :views, :sequence
|
43
|
-
attr_accessor :root, :editor
|
43
|
+
attr_accessor :root, :editor, :features
|
44
44
|
attr_accessor :view # overridden
|
45
45
|
|
46
46
|
attr_accessor :post_views, :post_tags, :dirty_views
|
@@ -120,7 +120,7 @@ class RuneBlog
|
|
120
120
|
self.class.blog = self # Weird. Like a singleton - dumbass circular dependency?
|
121
121
|
|
122
122
|
@root = Dir.pwd/root_rel
|
123
|
-
write_repo_config(root: @root)
|
123
|
+
write_repo_config(root: @root) # ?? FIXME
|
124
124
|
get_repo_config
|
125
125
|
@views = retrieve_views
|
126
126
|
self.view = File.read(@root/"data/VIEW").chomp
|
@@ -134,16 +134,67 @@ class RuneBlog
|
|
134
134
|
@post_tags = []
|
135
135
|
end
|
136
136
|
|
137
|
+
def complete_file(name, vars, hash)
|
138
|
+
debugging = vars.nil?
|
139
|
+
return if hash.empty?
|
140
|
+
text = File.read(name)
|
141
|
+
if vars.nil? # FIXME dumbest hack ever?
|
142
|
+
vars = {}
|
143
|
+
hash.values.each {|val| vars[val] = val }
|
144
|
+
end
|
145
|
+
|
146
|
+
hash.each_pair {|key, var| text.gsub!(key, vars[var]) }
|
147
|
+
File.write(name, text)
|
148
|
+
end
|
149
|
+
|
150
|
+
def _generate_settings(view = nil)
|
151
|
+
vars = read_vars("#@root/data/universal.lt3")
|
152
|
+
hash = {/AUTHOR/ => "view.author",
|
153
|
+
/SITE/ => "view.site",
|
154
|
+
/FONT/ => "font.family",
|
155
|
+
/CHARSET/ => :charset,
|
156
|
+
/LOCALE/ => :locale}
|
157
|
+
|
158
|
+
# rubytext.txt - LATER
|
159
|
+
# complete_file(settings/"rubytext.txt", {}
|
160
|
+
|
161
|
+
if view
|
162
|
+
settings = @root/view/"settings"
|
163
|
+
### ??? Where to get hash of view-specific vars?
|
164
|
+
|
165
|
+
# features.txt - handle specially
|
166
|
+
fname = settings/"features.txt"
|
167
|
+
|
168
|
+
# view.txt
|
169
|
+
complete_file(settings/"view.txt",
|
170
|
+
/AUTHOR/ => "view.author",
|
171
|
+
/TITLE/ => "view.title",
|
172
|
+
/SUBTITLE/ => "view.subtitle",
|
173
|
+
/SITE/ => "view.site")
|
174
|
+
|
175
|
+
# publish.txt
|
176
|
+
complete_file(settings/"publish.txt",
|
177
|
+
/USER/ => "publish.user",
|
178
|
+
/SERVER/ => "publish.server",
|
179
|
+
/DOCROOT/ => "publish.docroot",
|
180
|
+
/PATH/ => "publish.path",
|
181
|
+
/PROTO/ => "publish.proto")
|
182
|
+
|
183
|
+
# recent.txt - SKIP THIS?
|
184
|
+
complete_file(settings/"recent.txt", {})
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
137
188
|
def _generate_global
|
138
189
|
vars = read_vars("#@root/data/universal.lt3")
|
139
190
|
gfile = "#@root/data/global.lt3"
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
191
|
+
hash = {/AUTHOR/ => "univ.author",
|
192
|
+
/SITE/ => "univ.site",
|
193
|
+
/FONT/ => "font.family",
|
194
|
+
/CHARSET/ => :charset,
|
195
|
+
/LOCALE/ => :locale}
|
196
|
+
complete_file(gfile, vars, hash)
|
197
|
+
_generate_settings
|
147
198
|
end
|
148
199
|
|
149
200
|
def _deploy_local(dir)
|
@@ -151,10 +202,7 @@ class RuneBlog
|
|
151
202
|
Dir.chdir(dir) do
|
152
203
|
views = _retrieve_metadata(:views)
|
153
204
|
views.each do |v|
|
154
|
-
unless
|
155
|
-
puts "#{fx("Warning:", :red)} #{fx(v, :bold)} is not a view"
|
156
|
-
next
|
157
|
-
end
|
205
|
+
next unless _check_view?(v)
|
158
206
|
system!("cp *html #@root/views/#{v}/remote", show: true)
|
159
207
|
end
|
160
208
|
end
|
@@ -162,6 +210,8 @@ class RuneBlog
|
|
162
210
|
_tmp_error(err)
|
163
211
|
end
|
164
212
|
|
213
|
+
# FIXME reconcile with _get_draft data
|
214
|
+
|
165
215
|
def _retrieve_metadata(key)
|
166
216
|
key = key.to_s
|
167
217
|
lines = File.readlines("metadata.txt")
|
@@ -193,7 +243,7 @@ class RuneBlog
|
|
193
243
|
dir = @root/:posts/nslug
|
194
244
|
create_dirs(dir)
|
195
245
|
# FIXME dependencies?
|
196
|
-
preprocess cwd: dir, src: @root/:drafts/sourcefile, dst: @root/:posts/sourcefile.sub(/.lt3/, "
|
246
|
+
preprocess cwd: dir, src: @root/:drafts/sourcefile, dst: @root/:posts/sourcefile.sub(/.lt3/, ".html"), # ZZZ
|
197
247
|
mix: "liveblog" # , debug: true
|
198
248
|
_deploy_local(dir)
|
199
249
|
rescue => err
|
@@ -373,7 +423,7 @@ class RuneBlog
|
|
373
423
|
html = "/tmp/post_entry.html"
|
374
424
|
preprocess src: post_entry_name, dst: html,
|
375
425
|
call: ".nopara" # , deps: depend # , debug: true
|
376
|
-
@_post_entry
|
426
|
+
@_post_entry = File.read(html)
|
377
427
|
vp = post_lookup(id)
|
378
428
|
nslug, aslug, title, date, teaser_text =
|
379
429
|
vp.nslug, vp.aslug, vp.title, vp.date, vp.teaser_text
|
@@ -499,15 +549,14 @@ class RuneBlog
|
|
499
549
|
@theme/"blog/head.lt3",
|
500
550
|
# @theme/"navbar/navbar.lt3",
|
501
551
|
@theme/"blog/index.lt3"] # FIXME what about assets?
|
502
|
-
preprocess cwd: vdir/"themes/standard/etc",
|
503
|
-
|
504
|
-
call: ".nopara" # , dst: "blog.css"
|
552
|
+
preprocess cwd: vdir/"themes/standard/etc", src: "blog.css.lt3",
|
553
|
+
copy: vdir/"remote/etc/", call: [".nopara"], strip: true
|
505
554
|
preprocess cwd: vdir/"themes/standard", deps: depend, force: true,
|
506
555
|
src: "blog/generate.lt3", dst: vdir/:remote/"index.html",
|
507
556
|
call: ".nopara"
|
508
557
|
copy!("#{vdir}/themes/standard/banner/*", "#{vdir}/remote/banner/") # includes navbar/
|
509
558
|
copy("#{vdir}/assets/*", "#{vdir}/remote/assets/")
|
510
|
-
# rebuild widgets
|
559
|
+
# rebuild widgets?
|
511
560
|
copy_widget_html(view)
|
512
561
|
rescue => err
|
513
562
|
STDERR.puts err
|
@@ -515,6 +564,27 @@ class RuneBlog
|
|
515
564
|
# _tmp_error(err)
|
516
565
|
end
|
517
566
|
|
567
|
+
def _get_draft_data(num, sym)
|
568
|
+
tag = prefix(num)
|
569
|
+
front = @blog.root/:drafts/tag
|
570
|
+
files = Dir[front + "*"]
|
571
|
+
raise "No draft #{num} found" if files.empty?
|
572
|
+
raise "Too many files found for #{num}!" if files.size > 1
|
573
|
+
file = files.first
|
574
|
+
lines = File.readlines(file)
|
575
|
+
case sym
|
576
|
+
when :views
|
577
|
+
view_line = lines.grep(/^.views /)
|
578
|
+
raise "More than one .views call in #{draft}" if view_line.size > 1
|
579
|
+
raise "No .views call in #{draft}" if view_line.size < 1
|
580
|
+
view_line = view_line.first
|
581
|
+
views = view_line[7..-1].split
|
582
|
+
return views.uniq
|
583
|
+
else
|
584
|
+
raise "Unknown symbol #{sym.inspect}"
|
585
|
+
end
|
586
|
+
end
|
587
|
+
|
518
588
|
def _get_views(draft)
|
519
589
|
log!(enter: __method__, args: [draft], level: 2)
|
520
590
|
# FIXME dumb code
|
@@ -604,6 +674,8 @@ class RuneBlog
|
|
604
674
|
log!(enter: __method__, args: [draft, view_name], level: 2)
|
605
675
|
# break into separate methods?
|
606
676
|
|
677
|
+
return unless _check_view?(view_name)
|
678
|
+
|
607
679
|
fname = File.basename(draft) # 0001-this-is-a-post.lt3
|
608
680
|
nslug = fname.sub(/.lt3$/, "") # 0001-this-is-a-post
|
609
681
|
aslug = nslug.sub(/\d\d\d\d-/, "") # this-is-a-post
|
@@ -633,30 +705,16 @@ class RuneBlog
|
|
633
705
|
_tmp_error(err)
|
634
706
|
end
|
635
707
|
|
708
|
+
def _check_view?(view)
|
709
|
+
flag = self.view?(view)
|
710
|
+
puts " Warning: '#{view}' is not a view" unless flag
|
711
|
+
flag
|
712
|
+
end
|
713
|
+
|
636
714
|
def generate_post(draft, force = false)
|
637
715
|
log!(enter: __method__, args: [draft], level: 1)
|
638
716
|
views = _get_views(draft)
|
639
|
-
views.each
|
640
|
-
unless self.view?(view)
|
641
|
-
puts "Warning: '#{view}' is not a view"
|
642
|
-
next
|
643
|
-
end
|
644
|
-
_handle_post(draft, view)
|
645
|
-
end
|
646
|
-
rescue => err
|
647
|
-
_tmp_error(err)
|
648
|
-
end
|
649
|
-
|
650
|
-
def rebuild_post(file)
|
651
|
-
log!(enter: __method__, args: [file])
|
652
|
-
raise "Doesn't currently work"
|
653
|
-
debug "Called rebuild_post(#{file.inspect})"
|
654
|
-
raise ArgumentError unless file.is_a?(String)
|
655
|
-
meta = process_post(file)
|
656
|
-
@views_dirty ||= []
|
657
|
-
@views_dirty << meta.views
|
658
|
-
@views_dirty.flatten!
|
659
|
-
@views_dirty.uniq!
|
717
|
+
views.each {|view| _handle_post(draft, view) }
|
660
718
|
rescue => err
|
661
719
|
_tmp_error(err)
|
662
720
|
end
|
data/lib/runeblog_version.rb
CHANGED
data/lib/view.rb
CHANGED
@@ -15,6 +15,8 @@ class RuneBlog::View
|
|
15
15
|
@can_publish = true # FIXME
|
16
16
|
@blog.view = self
|
17
17
|
gfile = @blog.root/"views/#{name}/themes/standard/global.lt3"
|
18
|
+
return unless File.exist?(gfile) # Hackish!! how is View.new called from create_view??
|
19
|
+
|
18
20
|
live = Livetext.customize(call: ".nopara")
|
19
21
|
live.xform_file(gfile)
|
20
22
|
@globals = live.vars
|
data/runeblog.gemspec
CHANGED
@@ -20,7 +20,7 @@ spec = Gem::Specification.new do |s|
|
|
20
20
|
s.authors = ["Hal Fulton"]
|
21
21
|
s.email = 'rubyhacker@gmail.com'
|
22
22
|
s.executables << "blog"
|
23
|
-
s.add_runtime_dependency 'livetext', '~> 0.
|
23
|
+
s.add_runtime_dependency 'livetext', '~> 0.9', '>= 0.9.01'
|
24
24
|
s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.20'
|
25
25
|
|
26
26
|
s.add_development_dependency 'minitest', '~> 5.10', '>= 5.10.0'
|
data/test/austin.rb
CHANGED
@@ -59,19 +59,17 @@ x = RuneBlog.new(".blogs")
|
|
59
59
|
debug("create_view: #{bold('around_austin')}")
|
60
60
|
x.create_view("around_austin") # FIXME remember view title!
|
61
61
|
|
62
|
-
#### FIXME
|
63
|
-
vars = <<-VARS
|
64
|
-
|
65
|
-
.variables
|
66
|
-
blog Around Austin
|
67
|
-
blog.desc The view from downtown...
|
62
|
+
#### FIXME
|
68
63
|
|
69
|
-
|
70
|
-
|
64
|
+
vars = <<-VARS
|
65
|
+
author Hal Fulton
|
66
|
+
title Around Austin
|
67
|
+
subtitle The view from downtown...
|
68
|
+
domain foo.com
|
71
69
|
VARS
|
72
|
-
|
73
|
-
|
74
|
-
|
70
|
+
vfile = ".blogs/views/around_austin/settings/view.txt"
|
71
|
+
File.open(vfile, "w") {|f| f.puts vars }
|
72
|
+
|
75
73
|
####
|
76
74
|
|
77
75
|
debug("-- change_view: #{bold('around_austin')}")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: runeblog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.02
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: livetext
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.9'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.
|
22
|
+
version: 0.9.01
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
29
|
+
version: '0.9'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
32
|
+
version: 0.9.01
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rubytext
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -85,6 +85,7 @@ files:
|
|
85
85
|
- data/EDITOR
|
86
86
|
- data/ROOT
|
87
87
|
- data/VIEW
|
88
|
+
- data/features.txt
|
88
89
|
- data/global.lt3
|
89
90
|
- data/universal.lt3
|
90
91
|
- empty_view/assets/austin-pano.jpg
|
@@ -94,19 +95,22 @@ files:
|
|
94
95
|
- empty_view/config/exper/meta.html
|
95
96
|
- empty_view/config/exper/s2.html
|
96
97
|
- empty_view/config/exper/varmint.rb
|
98
|
+
- empty_view/config/facebook/credentials.txt
|
97
99
|
- empty_view/config/facebook/facebook.rb
|
98
100
|
- empty_view/config/facebook/fb.html
|
99
|
-
- empty_view/config/facebook/fb.js
|
100
|
-
- empty_view/config/reddit/
|
101
|
+
- empty_view/config/facebook/fb.js.lt3
|
102
|
+
- empty_view/config/reddit/credentials.txt
|
101
103
|
- empty_view/config/reddit/notes.txt
|
102
104
|
- empty_view/config/reddit/reddit_post_url.py
|
103
105
|
- empty_view/config/reddit/redpost.rb
|
104
106
|
- empty_view/config/reddit/the-graffiti-wall.html
|
107
|
+
- empty_view/config/twitter/credentials.txt
|
105
108
|
- empty_view/config/twitter/tw.html
|
106
109
|
- empty_view/config/twitter/tw.js
|
107
110
|
- empty_view/config/twitter/twitter.rb
|
108
111
|
- empty_view/posts/GIT_IS_DUMB
|
109
112
|
- empty_view/remote/assets/GIT_IS_DUMB
|
113
|
+
- empty_view/remote/banner/navbar/GIT_IS_DUMB
|
110
114
|
- empty_view/remote/etc/GIT_IS_DUMB
|
111
115
|
- empty_view/remote/permalink/GIT_IS_DUMB
|
112
116
|
- empty_view/remote/widgets/ad/GIT_IS_DUMB
|
@@ -114,6 +118,10 @@ files:
|
|
114
118
|
- empty_view/remote/widgets/news/GIT_IS_DUMB
|
115
119
|
- empty_view/remote/widgets/pages/GIT_IS_DUMB
|
116
120
|
- empty_view/remote/widgets/pinned/GIT_IS_DUMB
|
121
|
+
- empty_view/settings/features.txt
|
122
|
+
- empty_view/settings/publish.txt
|
123
|
+
- empty_view/settings/recent.txt
|
124
|
+
- empty_view/settings/view.txt
|
117
125
|
- empty_view/themes/standard/README
|
118
126
|
- empty_view/themes/standard/banner/banner.lt3
|
119
127
|
- empty_view/themes/standard/banner/navbar/about.lt3
|
@@ -129,7 +137,6 @@ files:
|
|
129
137
|
- empty_view/themes/standard/etc/externals.lt3
|
130
138
|
- empty_view/themes/standard/etc/favicon.ico
|
131
139
|
- empty_view/themes/standard/etc/misc.js
|
132
|
-
- empty_view/themes/standard/global.lt3
|
133
140
|
- empty_view/themes/standard/post/generate.lt3
|
134
141
|
- empty_view/themes/standard/post/head.lt3
|
135
142
|
- empty_view/themes/standard/post/index.lt3
|
@@ -1,35 +0,0 @@
|
|
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 stuff
|
33
|
-
publish.proto http
|
34
|
-
.end
|
35
|
-
|