runeblog 0.2.90 → 0.2.95
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 +10 -7
- data/{lib → empty_view/config}/exper/2svg.lt3 +0 -0
- data/{lib → empty_view/config}/exper/gen_svg.rb +0 -0
- data/empty_view/config/exper/meta.html +10 -0
- data/{lib → empty_view/config}/exper/s2.html +0 -0
- data/{lib → empty_view/config}/exper/varmint.rb +0 -0
- data/empty_view/config/facebook/facebook.rb +37 -0
- data/empty_view/config/facebook/fb.html +10 -0
- data/empty_view/config/facebook/fb.js +13 -0
- data/empty_view/config/reddit/config.txt +6 -0
- data/empty_view/config/reddit/notes.txt +4 -0
- data/empty_view/config/reddit/reddit_post_url.py +34 -0
- data/empty_view/config/reddit/redpost.rb +43 -0
- data/empty_view/config/reddit/the-graffiti-wall.html +91 -0
- data/empty_view/config/twitter/tw.html +12 -0
- data/empty_view/config/twitter/tw.js +5 -0
- data/{lib/exper/fbtw.rb → empty_view/config/twitter/twitter.rb} +1 -23
- data/empty_view/themes/standard/{blog → banner}/banner.lt3 +0 -0
- data/empty_view/themes/standard/banner/{about.lt3 → navbar/about.lt3} +0 -0
- data/empty_view/themes/standard/banner/{contact.lt3 → navbar/contact.lt3} +0 -0
- data/empty_view/themes/standard/banner/navbar/faq.lt3 +1 -0
- data/empty_view/themes/standard/banner/{list.data → navbar/list.data} +0 -0
- data/empty_view/themes/standard/blog/generate.lt3 +1 -1
- data/empty_view/themes/standard/global.lt3 +1 -1
- data/empty_view/themes/standard/post/generate.lt3 +1 -1
- data/empty_view/themes/standard/post/index.lt3 +8 -8
- data/empty_view/themes/standard/widgets/links/links.rb +1 -1
- data/empty_view/themes/standard/widgets/news/news.rb +1 -1
- data/empty_view/themes/standard/widgets/pages/pages.rb +2 -2
- data/empty_view/themes/standard/widgets/pinned/pinned.rb +1 -1
- data/lib/helpers-blog.rb +30 -63
- data/lib/helpers-repl.rb +3 -13
- data/lib/liveblog.rb +56 -42
- data/lib/lowlevel.rb +73 -0
- data/lib/publish.rb +6 -22
- data/lib/repl.rb +25 -16
- data/lib/runeblog.rb +46 -15
- data/lib/runeblog_version.rb +1 -17
- metadata +24 -16
- data/empty_view/remote/banner/austin-pano.jpg +0 -0
- data/empty_view/themes/standard/banner/faq.lt3 +0 -1
- data/lib/default.rb +0 -31
- data/lib/exper/callout.js +0 -10
- data/lib/exper/fbtw-js +0 -48
data/lib/publish.rb
CHANGED
@@ -37,31 +37,15 @@ class RuneBlog::Publishing
|
|
37
37
|
url = "#@proto://#@server/#@path" # /#{vname}"
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
41
|
-
log!(enter: __method__,
|
42
|
-
rc = system(str)
|
43
|
-
rc
|
44
|
-
end
|
45
|
-
|
46
|
-
def publish(files, assets=[])
|
47
|
-
log!(enter: __method__, args: [files, assets], level: 1)
|
40
|
+
def publish
|
41
|
+
log!(enter: __method__, level: 1)
|
48
42
|
dir = @docroot/@path
|
49
43
|
view_name = @blog.view.name
|
50
44
|
viewpath = dir # /view_name
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
cmd = "scp -r #{file} #{dest} >/dev/null 2>/tmp/wtf"
|
56
|
-
debug "cmd = #{cmd.inspect} - see /tmp/wtf"
|
57
|
-
result = system!(cmd) || puts("\n Could not copy #{file} to #{dest}")
|
58
|
-
end
|
59
|
-
unless assets.empty?
|
60
|
-
cmd = "scp #{assets.join(' ')} #@user@#@server:#{viewpath}/assets >/dev/null 2>/tmp/wtf2"
|
61
|
-
result = system!(cmd)
|
62
|
-
raise PublishError if !result
|
63
|
-
end
|
64
|
-
dump(files, "#{@blog.view.dir}/last_published")
|
45
|
+
# FIXME rsync doesn't work
|
46
|
+
cmd = "rsync -r -z #{@blog.root}/views/#{@blog.view}/remote/ #@user@#@server:#{viewpath}/"
|
47
|
+
system!(cmd)
|
48
|
+
dump("#{@blog.view} at #{Time.now}", "#{@blog.view.dir}/last_published")
|
65
49
|
true
|
66
50
|
end
|
67
51
|
|
data/lib/repl.rb
CHANGED
@@ -39,6 +39,7 @@ module RuneBlog::REPL
|
|
39
39
|
|
40
40
|
def cmd_config(arg, testing = false)
|
41
41
|
hash = {"global.lt3 Global configuration" => "global.lt3",
|
42
|
+
"banner/top.lt3 Text portion of banner" => "banner/top.lt3",
|
42
43
|
"blog/generate.lt3 Generator for view (usu not edited)" => "blog/generate.lt3",
|
43
44
|
".... head.lt3 HEAD info for view" => "blog/head.lt3",
|
44
45
|
".... banner.lt3 banner description" => "blog/banner.lt3",
|
@@ -75,10 +76,10 @@ module RuneBlog::REPL
|
|
75
76
|
end
|
76
77
|
|
77
78
|
def _manage_navbar(arg, testing = false) # cloned from manage_pages
|
78
|
-
dir = @blog.view.dir/"themes/standard/navbar"
|
79
|
+
dir = @blog.view.dir/"themes/standard/banner/navbar"
|
79
80
|
files = Dir.entries(dir) - %w[. .. navbar.lt3]
|
80
|
-
new_item = " [New item] "
|
81
81
|
main_file = "[ navbar.lt3 ]"
|
82
|
+
new_item = " [New item] "
|
82
83
|
files = [main_file] + files + [new_item]
|
83
84
|
num, fname = STDSCR.menu(title: "Edit navbar:", items: files)
|
84
85
|
return if fname.nil?
|
@@ -113,7 +114,7 @@ module RuneBlog::REPL
|
|
113
114
|
dir = @blog.view.dir/"themes/standard/widgets/pages"
|
114
115
|
# Assume child files already generated (and list.data??)
|
115
116
|
data = dir/"list.data"
|
116
|
-
lines =
|
117
|
+
lines = _get_data?(data)
|
117
118
|
hash = {}
|
118
119
|
lines.each do |line|
|
119
120
|
url, name = line.chomp.split(",")
|
@@ -192,19 +193,8 @@ module RuneBlog::REPL
|
|
192
193
|
return @out
|
193
194
|
end
|
194
195
|
|
195
|
-
# Need to check dirty/clean status first
|
196
|
-
dirty, all, assets = @blog.view.publishable_files
|
197
|
-
files = dirty
|
198
|
-
if dirty.empty?
|
199
|
-
puts fx("\n No files are out of date." + " "*20, :bold)
|
200
|
-
print " Publish anyway? "
|
201
|
-
yn = RubyText.gets.chomp
|
202
|
-
files = all if yn == "y"
|
203
|
-
end
|
204
|
-
return @out if files.empty?
|
205
|
-
|
206
196
|
ret = RubyText.spinner(label: " Publishing... ") do
|
207
|
-
@blog.view.publisher.publish
|
197
|
+
@blog.view.publisher.publish
|
208
198
|
end
|
209
199
|
return @out unless ret
|
210
200
|
|
@@ -224,12 +214,31 @@ module RuneBlog::REPL
|
|
224
214
|
puts "Error: See #{out}"
|
225
215
|
end
|
226
216
|
|
217
|
+
def fresh?(src, dst)
|
218
|
+
return false unless File.exist?(dst)
|
219
|
+
File.mtime(src) <= File.mtime(dst)
|
220
|
+
end
|
221
|
+
|
222
|
+
def regen_posts
|
223
|
+
drafts = @blog.drafts # current view
|
224
|
+
drafts.each do |draft|
|
225
|
+
orig = @blog.root/:drafts/draft
|
226
|
+
html = @blog.root/:posts/draft
|
227
|
+
html.sub!(/.lt3$/, "/guts.html")
|
228
|
+
next if fresh?(orig, html)
|
229
|
+
puts " Regenerating #{draft}"
|
230
|
+
@blog.generate_post(orig) # rebuild post
|
231
|
+
end
|
232
|
+
puts
|
233
|
+
end
|
234
|
+
|
227
235
|
def cmd_rebuild(arg, testing = false)
|
228
236
|
debug "Starting cmd_rebuild..."
|
229
237
|
reset_output
|
230
238
|
puts unless testing
|
231
239
|
@blog.generate_view(@blog.view)
|
232
240
|
@blog.generate_index(@blog.view)
|
241
|
+
regen_posts
|
233
242
|
@out
|
234
243
|
rescue => err
|
235
244
|
out = "/tmp/blog#{rand(100)}.txt"
|
@@ -267,7 +276,7 @@ module RuneBlog::REPL
|
|
267
276
|
def cmd_new_view(arg, testing = false)
|
268
277
|
reset_output
|
269
278
|
if arg.nil?
|
270
|
-
arg = ask("\nFilename: ")
|
279
|
+
arg = ask(fx("\nFilename: ", :bold))
|
271
280
|
puts
|
272
281
|
end
|
273
282
|
@blog.create_view(arg)
|
data/lib/runeblog.rb
CHANGED
@@ -10,7 +10,6 @@ require 'logging'
|
|
10
10
|
|
11
11
|
require 'runeblog_version'
|
12
12
|
require 'helpers-blog'
|
13
|
-
require 'default'
|
14
13
|
require 'view'
|
15
14
|
require 'publish'
|
16
15
|
require 'post'
|
@@ -48,6 +47,34 @@ class RuneBlog
|
|
48
47
|
|
49
48
|
include Helpers
|
50
49
|
|
50
|
+
class Default
|
51
|
+
|
52
|
+
# This will all become much more generic later.
|
53
|
+
|
54
|
+
def RuneBlog.post_template(num: 0, title: "No title", date: nil, view: "test_view",
|
55
|
+
teaser: "No teaser", body: "No body", tags: ["untagged"],
|
56
|
+
views: [], back: "javascript:history.go(-1)", home: "no url")
|
57
|
+
log!(enter: __method__, args: [num, title, date, view, teaser, body, tags, views, back, home], level: 3)
|
58
|
+
viewlist = (views + [view.to_s]).join(" ")
|
59
|
+
taglist = ".tags " + tags.join(" ")
|
60
|
+
|
61
|
+
<<~TEXT
|
62
|
+
.post #{num}
|
63
|
+
|
64
|
+
.title #{title}
|
65
|
+
.pubdate #{date}
|
66
|
+
.views #{viewlist}
|
67
|
+
#{taglist}
|
68
|
+
|
69
|
+
.teaser
|
70
|
+
#{teaser}
|
71
|
+
.end
|
72
|
+
#{body}
|
73
|
+
TEXT
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
51
78
|
def _tmp_error(err) # FIXME move to helpers
|
52
79
|
out = "/tmp/blog#{rand(100)}.txt"
|
53
80
|
File.open(out, "w") do |f|
|
@@ -65,10 +92,13 @@ class RuneBlog
|
|
65
92
|
raise BlogRepoAlreadyExists if Dir.exist?(repo_root)
|
66
93
|
create_dirs(repo_root)
|
67
94
|
Dir.chdir(repo_root) do
|
68
|
-
create_dirs(:data, :drafts, :views, :posts)
|
95
|
+
create_dirs(:data, :config, :drafts, :views, :posts)
|
69
96
|
new_sequence
|
70
97
|
end
|
71
|
-
|
98
|
+
unless File.exist?(repo_root/"data/VIEW")
|
99
|
+
copy_data(:config, repo_root/:data)
|
100
|
+
end
|
101
|
+
copy_data(:extra, repo_root/:config)
|
72
102
|
write_repo_config(root: repo_root)
|
73
103
|
@blog = self.new
|
74
104
|
@blog
|
@@ -90,10 +120,10 @@ class RuneBlog
|
|
90
120
|
self.class.blog = self # Weird. Like a singleton - dumbass circular dependency?
|
91
121
|
|
92
122
|
@root = Dir.pwd/root_rel
|
93
|
-
copy_data(:config, @root/:data)
|
94
123
|
write_repo_config(root: @root)
|
95
124
|
get_repo_config
|
96
|
-
@views =
|
125
|
+
@views = retrieve_views
|
126
|
+
self.view = File.read(@root/"data/VIEW").chomp
|
97
127
|
md = Dir.pwd.match(%r[.*/views/(.*?)/])
|
98
128
|
if md
|
99
129
|
@view_name = md[1]
|
@@ -163,7 +193,7 @@ class RuneBlog
|
|
163
193
|
dir = @root/:posts/nslug
|
164
194
|
create_dirs(dir)
|
165
195
|
# FIXME dependencies?
|
166
|
-
preprocess cwd: dir, src: @root/:drafts/sourcefile,
|
196
|
+
preprocess cwd: dir, src: @root/:drafts/sourcefile, dst: @root/:posts/sourcefile.sub(/.lt3/, ",html"), # ZZZ
|
167
197
|
mix: "liveblog" # , debug: true
|
168
198
|
_deploy_local(dir)
|
169
199
|
rescue => err
|
@@ -209,6 +239,9 @@ class RuneBlog
|
|
209
239
|
def view=(arg)
|
210
240
|
log!(enter: __method__, args: [arg], level: 2)
|
211
241
|
case arg
|
242
|
+
when "[no view]"
|
243
|
+
# puts "Warning: No current view set"
|
244
|
+
@view = nil
|
212
245
|
when RuneBlog::View
|
213
246
|
@view = arg
|
214
247
|
_set_publisher
|
@@ -226,13 +259,13 @@ class RuneBlog
|
|
226
259
|
|
227
260
|
def get_sequence
|
228
261
|
log!(enter: __method__, level: 3)
|
229
|
-
File.read(@root
|
262
|
+
File.read(@root/"data/sequence").to_i
|
230
263
|
end
|
231
264
|
|
232
265
|
def next_sequence
|
233
266
|
log!(enter: __method__, level: 3)
|
234
267
|
@sequence += 1
|
235
|
-
dump(@sequence, @root
|
268
|
+
dump(@sequence, @root/"data/sequence")
|
236
269
|
@sequence
|
237
270
|
end
|
238
271
|
|
@@ -472,7 +505,9 @@ class RuneBlog
|
|
472
505
|
preprocess cwd: vdir/"themes/standard", deps: depend, force: true,
|
473
506
|
src: "blog/generate.lt3", dst: vdir/:remote/"index.html",
|
474
507
|
call: ".nopara"
|
508
|
+
copy!("#{vdir}/themes/standard/banner/*", "#{vdir}/remote/banner/") # includes navbar/
|
475
509
|
copy("#{vdir}/assets/*", "#{vdir}/remote/assets/")
|
510
|
+
# rebuild widgets
|
476
511
|
copy_widget_html(view)
|
477
512
|
rescue => err
|
478
513
|
STDERR.puts err
|
@@ -484,8 +519,8 @@ class RuneBlog
|
|
484
519
|
log!(enter: __method__, args: [draft], level: 2)
|
485
520
|
# FIXME dumb code
|
486
521
|
view_line = File.readlines(draft).grep(/^.views /)
|
487
|
-
raise "More than one .views call
|
488
|
-
raise "No .views call
|
522
|
+
raise "More than one .views call in #{draft}" if view_line.size > 1
|
523
|
+
raise "No .views call in #{draft}" if view_line.size < 1
|
489
524
|
view_line = view_line.first
|
490
525
|
views = view_line[7..-1].split
|
491
526
|
views.uniq
|
@@ -593,16 +628,12 @@ class RuneBlog
|
|
593
628
|
preprocess cwd: @theme/:post, src: "generate.lt3", force: true,
|
594
629
|
dst: remote/ahtml, copy: @theme/:post,
|
595
630
|
call: ".nopara" # , debug: true
|
596
|
-
# FIXME dependencies?
|
597
|
-
preprocess cwd: @theme/:post, src: "permalink.lt3",
|
598
|
-
dst: remote/:permalink/ahtml,
|
599
|
-
mix: "liveblog" # , debug: true
|
600
631
|
copy_widget_html(view_name)
|
601
632
|
rescue => err
|
602
633
|
_tmp_error(err)
|
603
634
|
end
|
604
635
|
|
605
|
-
def generate_post(draft)
|
636
|
+
def generate_post(draft, force = false)
|
606
637
|
log!(enter: __method__, args: [draft], level: 1)
|
607
638
|
views = _get_views(draft)
|
608
639
|
views.each do |view|
|
data/lib/runeblog_version.rb
CHANGED
@@ -3,7 +3,7 @@ if !defined?(RuneBlog::Path)
|
|
3
3
|
# if ! (Object.constants.include?(:RuneBlog) && RuneBlog.constants.include?(:Path))
|
4
4
|
|
5
5
|
class RuneBlog
|
6
|
-
VERSION = "0.2.
|
6
|
+
VERSION = "0.2.95"
|
7
7
|
|
8
8
|
path = Gem.find_files("runeblog").grep(/runeblog-/).first
|
9
9
|
Path = File.dirname(path)
|
@@ -41,22 +41,6 @@ def make_exception(sym, str)
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
def system!(str, show: false)
|
45
|
-
log!(enter: __method__, args: [str], level: 2)
|
46
|
-
STDERR.puts str if show
|
47
|
-
rc = system(str)
|
48
|
-
if rc
|
49
|
-
return rc
|
50
|
-
else
|
51
|
-
STDERR.puts "FAILED: #{str.inspect}"
|
52
|
-
STDERR.puts "\ncaller = \n#{caller.join("\n ")}\n"
|
53
|
-
sleep 6; RubyText.stop
|
54
|
-
exit
|
55
|
-
return rc
|
56
|
-
end
|
57
|
-
rc
|
58
|
-
end
|
59
|
-
|
60
44
|
def prefix(num)
|
61
45
|
log!(enter: __method__, args: [num], level: 3)
|
62
46
|
"#{'%04d' % num.to_i}"
|
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.2.
|
4
|
+
version: 0.2.95
|
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-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: livetext
|
@@ -89,9 +89,24 @@ files:
|
|
89
89
|
- data/universal.lt3
|
90
90
|
- empty_view/assets/austin-pano.jpg
|
91
91
|
- empty_view/assets/sky2.jpg
|
92
|
+
- empty_view/config/exper/2svg.lt3
|
93
|
+
- empty_view/config/exper/gen_svg.rb
|
94
|
+
- empty_view/config/exper/meta.html
|
95
|
+
- empty_view/config/exper/s2.html
|
96
|
+
- empty_view/config/exper/varmint.rb
|
97
|
+
- empty_view/config/facebook/facebook.rb
|
98
|
+
- empty_view/config/facebook/fb.html
|
99
|
+
- empty_view/config/facebook/fb.js
|
100
|
+
- empty_view/config/reddit/config.txt
|
101
|
+
- empty_view/config/reddit/notes.txt
|
102
|
+
- empty_view/config/reddit/reddit_post_url.py
|
103
|
+
- empty_view/config/reddit/redpost.rb
|
104
|
+
- empty_view/config/reddit/the-graffiti-wall.html
|
105
|
+
- empty_view/config/twitter/tw.html
|
106
|
+
- empty_view/config/twitter/tw.js
|
107
|
+
- empty_view/config/twitter/twitter.rb
|
92
108
|
- empty_view/posts/GIT_IS_DUMB
|
93
109
|
- empty_view/remote/assets/GIT_IS_DUMB
|
94
|
-
- empty_view/remote/banner/austin-pano.jpg
|
95
110
|
- empty_view/remote/etc/GIT_IS_DUMB
|
96
111
|
- empty_view/remote/permalink/GIT_IS_DUMB
|
97
112
|
- empty_view/remote/widgets/ad/GIT_IS_DUMB
|
@@ -100,12 +115,12 @@ files:
|
|
100
115
|
- empty_view/remote/widgets/pages/GIT_IS_DUMB
|
101
116
|
- empty_view/remote/widgets/pinned/GIT_IS_DUMB
|
102
117
|
- empty_view/themes/standard/README
|
103
|
-
- empty_view/themes/standard/banner/
|
104
|
-
- empty_view/themes/standard/banner/
|
105
|
-
- empty_view/themes/standard/banner/
|
106
|
-
- empty_view/themes/standard/banner/
|
118
|
+
- empty_view/themes/standard/banner/banner.lt3
|
119
|
+
- empty_view/themes/standard/banner/navbar/about.lt3
|
120
|
+
- empty_view/themes/standard/banner/navbar/contact.lt3
|
121
|
+
- empty_view/themes/standard/banner/navbar/faq.lt3
|
122
|
+
- empty_view/themes/standard/banner/navbar/list.data
|
107
123
|
- empty_view/themes/standard/banner/top.lt3
|
108
|
-
- empty_view/themes/standard/blog/banner.lt3
|
109
124
|
- empty_view/themes/standard/blog/generate.lt3
|
110
125
|
- empty_view/themes/standard/blog/head.lt3
|
111
126
|
- empty_view/themes/standard/blog/index.lt3
|
@@ -176,18 +191,11 @@ files:
|
|
176
191
|
- empty_view/themes/standard/widgets/tag-cloud/tag-cloud.lt3
|
177
192
|
- empty_view/themes/standard/widgets/tag-cloud/tag-cloud.rb
|
178
193
|
- lib/Javascript.stuff
|
179
|
-
- lib/default.rb
|
180
|
-
- lib/exper/2svg.lt3
|
181
|
-
- lib/exper/callout.js
|
182
|
-
- lib/exper/fbtw-js
|
183
|
-
- lib/exper/fbtw.rb
|
184
|
-
- lib/exper/gen_svg.rb
|
185
|
-
- lib/exper/s2.html
|
186
|
-
- lib/exper/varmint.rb
|
187
194
|
- lib/helpers-blog.rb
|
188
195
|
- lib/helpers-repl.rb
|
189
196
|
- lib/liveblog.rb
|
190
197
|
- lib/logging.rb
|
198
|
+
- lib/lowlevel.rb
|
191
199
|
- lib/pathmagic.rb
|
192
200
|
- lib/post.rb
|
193
201
|
- lib/processing.rb
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
.include ../widgets/pages/faq.lt3
|
data/lib/default.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
class RuneBlog::Default
|
2
|
-
|
3
|
-
# This will all become much more generic later.
|
4
|
-
|
5
|
-
def RuneBlog.post_template(num: 0, title: "No title", date: nil, view: "test_view",
|
6
|
-
teaser: "No teaser", body: "No body", tags: ["untagged"],
|
7
|
-
views: [], back: "javascript:history.go(-1)", home: "no url")
|
8
|
-
log!(enter: __method__, args: [num, title, date, view, teaser, body, tags, views, back, home], level: 3)
|
9
|
-
viewlist = (views + [view.to_s]).join(" ")
|
10
|
-
taglist = ".tags " + tags.join(" ")
|
11
|
-
|
12
|
-
# .mixin liveblog
|
13
|
-
# . ^ get rid of this later
|
14
|
-
|
15
|
-
<<-TEXT
|
16
|
-
.post #{num}
|
17
|
-
|
18
|
-
.title #{title}
|
19
|
-
.pubdate #{date}
|
20
|
-
.views #{viewlist}
|
21
|
-
#{taglist}
|
22
|
-
|
23
|
-
.teaser
|
24
|
-
#{teaser}
|
25
|
-
.end
|
26
|
-
#{body}
|
27
|
-
TEXT
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
data/lib/exper/callout.js
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
function callout(d, id, src) {
|
2
|
-
var js, fjs = d.getElementsByTagName('script')[0];
|
3
|
-
p=/^http:/.test(d.location)?'http':'https';
|
4
|
-
if (d.getElementById(id)) {return;}
|
5
|
-
js = d.createElement('script');
|
6
|
-
js.id = id;
|
7
|
-
js.src = p + src;
|
8
|
-
fjs.parentNode.insertBefore(js, fjs);
|
9
|
-
}
|
10
|
-
|
data/lib/exper/fbtw-js
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
|
2
|
-
<!-- scripts: FB, twitter -->
|
3
|
-
|
4
|
-
<script>
|
5
|
-
window.fbAsyncInit = function() {
|
6
|
-
FB.init({
|
7
|
-
appId : '1176481582378716',
|
8
|
-
xfbml : true,
|
9
|
-
version : 'v2.4'
|
10
|
-
});
|
11
|
-
};
|
12
|
-
|
13
|
-
callout(document, 'facebook-jssdk',
|
14
|
-
'//connect.facebook.net/en_US/sdk.js');
|
15
|
-
|
16
|
-
callout(document, 'script', 'twitter-wjs',
|
17
|
-
'//platform.twitter.com/widgets.js';
|
18
|
-
</script>
|
19
|
-
|
20
|
-
<!-- meta tags -->
|
21
|
-
|
22
|
-
<!-- meta property='fb:admins' content='767352779' /> -->
|
23
|
-
<meta property='og:url' content='http://rubyhacker.com/blog2/#{slug}.html'/>
|
24
|
-
<meta property='og:type' content='article'/>
|
25
|
-
<meta property='og:title' content='#{title}'/>
|
26
|
-
<meta property='og:image' content='http://rubyhacker.com/blog2/blog3b.gif'/>
|
27
|
-
<meta property='og:description' content='#{teaser}'/>
|
28
|
-
|
29
|
-
<!-- facebook -->
|
30
|
-
|
31
|
-
<div
|
32
|
-
class='fb-like'
|
33
|
-
data-share='true'
|
34
|
-
data-width='450'
|
35
|
-
data-show-faces='true'>
|
36
|
-
</div>
|
37
|
-
|
38
|
-
<!-- Twitter: share, follow -->
|
39
|
-
|
40
|
-
<a href='https://twitter.com/share'
|
41
|
-
class='twitter-share-button'
|
42
|
-
data-text='#{title}'
|
43
|
-
data-url='#{'url'}'
|
44
|
-
data-via='hal_fulton'
|
45
|
-
data-related='hal_fulton'>Tweet</a>
|
46
|
-
|
47
|
-
<a href='https://twitter.com/hal_fulton' class='twitter-follow-button' data-show-count='false'>Follow @hal_fulton</a>
|
48
|
-
|