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