runeblog 0.2.90 → 0.2.95

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/bin/blog +10 -7
  3. data/{lib → empty_view/config}/exper/2svg.lt3 +0 -0
  4. data/{lib → empty_view/config}/exper/gen_svg.rb +0 -0
  5. data/empty_view/config/exper/meta.html +10 -0
  6. data/{lib → empty_view/config}/exper/s2.html +0 -0
  7. data/{lib → empty_view/config}/exper/varmint.rb +0 -0
  8. data/empty_view/config/facebook/facebook.rb +37 -0
  9. data/empty_view/config/facebook/fb.html +10 -0
  10. data/empty_view/config/facebook/fb.js +13 -0
  11. data/empty_view/config/reddit/config.txt +6 -0
  12. data/empty_view/config/reddit/notes.txt +4 -0
  13. data/empty_view/config/reddit/reddit_post_url.py +34 -0
  14. data/empty_view/config/reddit/redpost.rb +43 -0
  15. data/empty_view/config/reddit/the-graffiti-wall.html +91 -0
  16. data/empty_view/config/twitter/tw.html +12 -0
  17. data/empty_view/config/twitter/tw.js +5 -0
  18. data/{lib/exper/fbtw.rb → empty_view/config/twitter/twitter.rb} +1 -23
  19. data/empty_view/themes/standard/{blog → banner}/banner.lt3 +0 -0
  20. data/empty_view/themes/standard/banner/{about.lt3 → navbar/about.lt3} +0 -0
  21. data/empty_view/themes/standard/banner/{contact.lt3 → navbar/contact.lt3} +0 -0
  22. data/empty_view/themes/standard/banner/navbar/faq.lt3 +1 -0
  23. data/empty_view/themes/standard/banner/{list.data → navbar/list.data} +0 -0
  24. data/empty_view/themes/standard/blog/generate.lt3 +1 -1
  25. data/empty_view/themes/standard/global.lt3 +1 -1
  26. data/empty_view/themes/standard/post/generate.lt3 +1 -1
  27. data/empty_view/themes/standard/post/index.lt3 +8 -8
  28. data/empty_view/themes/standard/widgets/links/links.rb +1 -1
  29. data/empty_view/themes/standard/widgets/news/news.rb +1 -1
  30. data/empty_view/themes/standard/widgets/pages/pages.rb +2 -2
  31. data/empty_view/themes/standard/widgets/pinned/pinned.rb +1 -1
  32. data/lib/helpers-blog.rb +30 -63
  33. data/lib/helpers-repl.rb +3 -13
  34. data/lib/liveblog.rb +56 -42
  35. data/lib/lowlevel.rb +73 -0
  36. data/lib/publish.rb +6 -22
  37. data/lib/repl.rb +25 -16
  38. data/lib/runeblog.rb +46 -15
  39. data/lib/runeblog_version.rb +1 -17
  40. metadata +24 -16
  41. data/empty_view/remote/banner/austin-pano.jpg +0 -0
  42. data/empty_view/themes/standard/banner/faq.lt3 +0 -1
  43. data/lib/default.rb +0 -31
  44. data/lib/exper/callout.js +0 -10
  45. data/lib/exper/fbtw-js +0 -48
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 365e66737ee3be0800f04dd3bda9eaca37cd6f76cd17db5d343eceff16749573
4
- data.tar.gz: da092312fc42edd3a662b45ca686b5c942353bb7f0d43bed209ff7085eb2718c
3
+ metadata.gz: a8c06b3d51a33a85b3420099bf6f6c40e3ac38bdc80b2c2ea5a77de81936f280
4
+ data.tar.gz: a28b089f368d4941418ace35fba818f13d7458362863002ab25d9ebefdfae706
5
5
  SHA512:
6
- metadata.gz: 67a954e3ce658970aadb244d6b35aee27c770a3e441033f3878deb6f991838418ecb59530163c42bfe88425d6c4c1e9684145b0c62e87b6f6a5244dd604f4e32
7
- data.tar.gz: 3e160483e7e9ec205d086db168d2b1254603fc2a4a6a18b789a360b38cc6c22eee4b221fbe0da6a132de4df7436f6bf18414e3bcab07db36cf683cb480178b38
6
+ metadata.gz: ffd6c82a51c01169b5a045d3f8c2a4f3f2db2230458c8cc4e7eff2740a0d3a0cf424a198a3187a888dd92b3c4976dd41597bae012514b3829c4921ad8750ef04
7
+ data.tar.gz: b47ac4fd2c6733a5433cf83d6c11c71f8b41bd71681826fadc9f4f98f57338fccc45491babbac7389f51cdd2927b04dee07f85aecfe68c8c75af0807ad03bd67
data/bin/blog CHANGED
@@ -25,8 +25,8 @@ 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)
@@ -39,10 +39,10 @@ end
39
39
 
40
40
  def get_global
41
41
  if yesno("Faster view setup? (no: edit global.lt3)")
42
- view_name = ask("\nFilename: ")
42
+ view_name = ask!("\nFilename: ")
43
43
  @blog.create_view(view_name) # call change_view??
44
- title = ask("View title: ")
45
- subtitle = ask("Subtitle : ")
44
+ title = ask!("View title: ")
45
+ subtitle = ask!("Subtitle : ")
46
46
  gname = "#{@blog.root}/views/#{view_name}/themes/standard/global.lt3"
47
47
  text = File.read(gname)
48
48
  text = text.gsub(/VIEW_NAME/, view_name)
@@ -50,7 +50,7 @@ def get_global
50
50
  text = text.gsub(/VIEW_SUBTITLE/, subtitle)
51
51
  File.write(gname, text)
52
52
  else
53
- view_name = ask("\nFilename: ")
53
+ view_name = ask!("\nFilename: ")
54
54
  @blog.create_view(view_name) # call change_view??
55
55
  vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
56
56
  edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
@@ -146,7 +146,10 @@ end
146
146
 
147
147
  major, minor = RUBY_VERSION.split(".").values_at(0,1)
148
148
  ver = major.to_i*10 + minor.to_i
149
- abort "Need Ruby 2.4 or greater" unless ver >= 24
149
+ unless ver >= 24
150
+ RubyText.stop
151
+ abort "Need Ruby 2.4 or greater"
152
+ end
150
153
 
151
154
  include RuneBlog::Helpers # for try_read_config
152
155
 
@@ -0,0 +1,10 @@
1
+
2
+ <!-- meta tags: separate out? -->
3
+
4
+ <!-- meta property='fb:admins' content='767352779' /> -->
5
+ <meta property='og:url' content='http://rubyhacker.com/blog2/#{slug}.html'/>
6
+ <meta property='og:type' content='article'/>
7
+ <meta property='og:title' content='#{title}'/>
8
+ <meta property='og:image' content='http://rubyhacker.com/blog2/blog3b.gif'/>
9
+ <meta property='og:description' content='#{teaser}'/>
10
+
File without changes
@@ -0,0 +1,37 @@
1
+ class Livetext::Functions
2
+
3
+ def facebook_init
4
+ fb_appid = _var("facebook.appid")
5
+ <<~HTML
6
+ window.fbAsyncInit = function() {
7
+ FB.init({
8
+ appId : '#{fb_appid}',
9
+ xfbml : true,
10
+ version : 'v2.4'
11
+ });
12
+ };
13
+ HTML
14
+ end
15
+
16
+ =begin
17
+ <!-- Needed: btw what is 'content'?
18
+ <meta property='fb:admins' content='767352779'/>
19
+ <meta property='og:url' content='http://rubyhacker.com/blog2/#{slug}.html'/>
20
+ <meta property='og:type' content='article'/>
21
+ <meta property='og:title' content='#{title}'/>
22
+ <meta property='og:image' content='http://rubyhacker.com/blog2/blog3b.gif'/>
23
+ <meta property='og:description' content='#{teaser}'/>
24
+ -->
25
+ =end
26
+
27
+ def facebook_likes
28
+ <<~HTML
29
+ <div class='fb-like'
30
+ data-share='true'
31
+ data-width='450'
32
+ data-show-faces='true'>
33
+ </div>
34
+ HTML
35
+ end
36
+
37
+ end
@@ -0,0 +1,10 @@
1
+
2
+ <!-- facebook -->
3
+
4
+ <div
5
+ class='fb-like'
6
+ data-share='true'
7
+ data-width='450'
8
+ data-show-faces='true'>
9
+ </div>
10
+
@@ -0,0 +1,13 @@
1
+ <script>
2
+ window.fbAsyncInit = function() {
3
+ FB.init({
4
+ appId : '1176481582378716',
5
+ xfbml : true,
6
+ version : 'v2.4'
7
+ });
8
+ };
9
+
10
+ callout(document, 'facebook-jssdk',
11
+ '//connect.facebook.net/en_US/sdk.js');
12
+ </script>
13
+
@@ -0,0 +1,6 @@
1
+ subreddit RubyElixirEtc
2
+ user_agent RuneBlog comments
3
+ client_id rAyZILgqGB7uHQ
4
+ client_secret 0CqLXyFu6ABb1MrErWRsB7Bo-i8
5
+ username hal_fulton
6
+ password adnar1m1
@@ -0,0 +1,4 @@
1
+ When a post is generated:
2
+ - check for reddit.id under VIEW/posts/nnnn-title/
3
+ - if it doesn't exist, post to reddit
4
+ - create the reddit.id
@@ -0,0 +1,34 @@
1
+
2
+ import re
3
+ import praw
4
+
5
+ f = open("reddit/config.txt", "r")
6
+ lines = f.readlines()
7
+ f.close()
8
+
9
+ dict = {}
10
+ for line in lines:
11
+ data = re.split(" +", line)
12
+ dict[data[0]] = data[1].rstrip()
13
+
14
+
15
+ reddit = praw.Reddit(user_agent = dict['user_agent'],
16
+ client_id = dict['client_id'],
17
+ client_secret = dict['client_secret'],
18
+ username = dict['username'],
19
+ password = dict['password'])
20
+
21
+ file = open("/tmp/reddit-post-url.txt", "r") # gaahhh
22
+ lines = file.readlines()
23
+ title = lines[0].rstrip()
24
+ url = lines[1].rstrip()
25
+
26
+ subred = reddit.subreddit(dict['subreddit'])
27
+ rid = subred.submit(title = title, url = url)
28
+
29
+ print(rid)
30
+
31
+ # submission = reddit.submission(id='edmcwf')
32
+ # print(submission.title)
33
+ # print(submission.url)
34
+
@@ -0,0 +1,43 @@
1
+ app_name = "raido1"
2
+ app_client = "rAyZILgqGB7uHQ"
3
+ secret = "0CqLXyFu6ABb1MrErWRsB7Bo-i8"
4
+
5
+ https://www.reddit.com/api/v1/authorize?client_id=rAyZILgqGB7uHQ&response_type=code&state=abc237def&redirect_uri=http%3A%2F%2Frubyhacker.com&duration=permanent&scope=identity%20edit%20flair%20history%20modconfig%20modflair%20modlog%20modposts%20modwiki%20mysubreddits%20privatemessages%20read%20report%20save%20submit%20subscribe%20vote%20wikiedit%20wikiread
6
+
7
+
8
+
9
+ require 'net/http'
10
+ require 'uri'
11
+ require 'json'
12
+
13
+
14
+ =begin
15
+ get_token = URI.parse("https://www.reddit.com/api/v1/access_token")
16
+ data = {
17
+ grant_type: authorization_code
18
+ code=CODE
19
+ redirect_uri=URI
20
+ }
21
+ =end
22
+
23
+
24
+
25
+ uri = URI.parse("http://reddit.com/api/submit")
26
+
27
+ header = {'Content-Type': 'text/json'}
28
+ data = {
29
+ sr: "RubyElixirEtc",
30
+ kind: "link",
31
+ title: "[Post] This is my title",
32
+ url: "http://rubyhacker.com/around_austin/permalink/the-graffiti-wall.html"
33
+ }
34
+
35
+ # Create the HTTP objects
36
+ http = Net::HTTP.new(uri.host, uri.port)
37
+ request = Net::HTTP::Post.new(uri.request_uri, header)
38
+ request.body = user.to_json
39
+
40
+ # Send the request
41
+ response = http.request(request)
42
+
43
+
@@ -0,0 +1,91 @@
1
+
2
+ <html>
3
+ <!-- Generated from /Users/Hal/Dropbox/files/runeblog/.blogs/views/around_austin/themes/standard/global.lt3 on 2019-12-19; editing not recommended. -->
4
+
5
+
6
+
7
+
8
+ <meta charset="utf-8">
9
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
10
+ <title>
11
+ Around Austin | The view from downtown...
12
+ </title>
13
+ <meta name="generator" content="Runeblog v 0.2.91">
14
+ <meta property="og:title" content="The graffiti wall ">
15
+ <meta property="og:locale" content="en_US">
16
+ <meta property="description" content="RIP, Hope Gallery">
17
+ <meta property="og:description" content="The view from downtown...">
18
+ <link rel="canonical" href="http://SITE">
19
+ <meta property="og:url" content="http://SITE">
20
+ <meta property="og:site_name" content="Around Austin">
21
+ <link type="application/atom+xml" rel="alternate" href="http://SITE/feed.xml" title="Around Austin">
22
+ <link rel="shortcut icon" type="image/x-icon" href="etc/favicon.ico">
23
+ <link rel="apple-touch-icon" href="etc/favicon.ico">
24
+ <link rel="stylesheet" href="etc/blog.css">
25
+ <body>
26
+
27
+ <section class="post">
28
+ <div class="entry-content">
29
+ <table border=0 width=100%><tr>
30
+ <td align=left valign=bottom><h2 class="post-title">The graffiti wall</h2></td>
31
+ <td align=right valign=top><font size=-5><br></font>December 2, 2019</td>
32
+ </tr></table><hr>
33
+ <!-- Post number 3 -->
34
+
35
+
36
+ RIP, Hope Gallery
37
+
38
+
39
+ <div class='mydrop'>I</div>
40
+ <div style="padding-top: 1px">t's been a while since I was there. They say it was torn down
41
+ while I wasn't looking. Never tagged anything there, of course, nor
42
+ anywhere else. Spraypainting public places isn't my thing, but in this
43
+ case I condoned it because it was sort of there for that purpose.
44
+
45
+ <p>
46
+ This fake entry is a long one so as to demonstrate both drop-caps
47
+ (above) and an inset quote. Blah blah blah. Lorem ipsum dolor and
48
+ a partridge in a pear tree.
49
+
50
+ <p>
51
+ </p>
52
+ Wherever you go, there you are. Last night I saw upon the stair
53
+ a little man who was not there. He wasn't there again today; I
54
+ wish, I wish he'd go away. As far as we know, our computer has
55
+ <div style='float:left; width: 20%; padding:8px; padding-right:12px'><b><i> On a clean disk, you can seek forever.</i></b></div>
56
+ never had an undetected error.
57
+ On a clean disk, you can seek forever.
58
+ And never let it be denied that
59
+ pobbles are happier without their toes. And may your snark never
60
+ be a boojum. How do you know you aren't dreaming right now? When
61
+ you see a butterfly, think of Chuang Tzu.
62
+ <p>
63
+ Contact light. Houston, this is Tranquility Base. The Eagle has
64
+ landed. That's one small step for (a) man, one giant leap for
65
+ mankind.
66
+
67
+ <p>
68
+ Here's the PDF of <a style='text-decoration: none' href='http://rubyhacker.com/blog2/rubydino.pdf'>"Ruby for the Old-Time C Programmer"</a>
69
+
70
+ <p>
71
+ Pity this busy monster, manunkind, not. Pity rather... Listen:
72
+ There's a hell of a universe next door; let's go.
73
+
74
+ <p>
75
+ </div>
76
+ </section>
77
+
78
+ <br>
79
+ <!-- <script src='https://redditjs.com/subreddit.js' data-subreddit='RubyElixirEtc' data-width=600></script> -->
80
+ <!-- https://www.reddit.com/r/RubyElixirEtc/comments/ed48ra/post_this_is_only_a_test/ -->
81
+
82
+ <hr>
83
+ <table width=100%><tr>
84
+ <td width=10%><a style="text-decoration: none" href="javascript:history.go(-1)">[Back]</a></td>
85
+ <td width=10%><a style="text-decoration: none" href="http://SITE/VIEW_NAME/permalink/the-graffiti-wall.html"> [permalink] </a></td>
86
+ <td width=80% align=right><font size=-3></font></td></tr></table>
87
+ <hr>
88
+ <script src='https://redditjs.com/post.js' data-url="ed48ra" data-width=800 ></script>
89
+
90
+ </body>
91
+ </html>
@@ -0,0 +1,12 @@
1
+
2
+ <!-- Twitter: share, follow -->
3
+
4
+ <a href='https://twitter.com/share'
5
+ class='twitter-share-button'
6
+ data-text='#{title}'
7
+ data-url='#{'url'}'
8
+ data-via='hal_fulton'
9
+ data-related='hal_fulton'>Tweet</a>
10
+
11
+ <a href='https://twitter.com/hal_fulton' class='twitter-follow-button' data-show-count='false'>Follow @hal_fulton</a>
12
+
@@ -0,0 +1,5 @@
1
+ <script>
2
+ callout(document, 'script', 'twitter-wjs',
3
+ '//platform.twitter.com/widgets.js';
4
+ </script>
5
+
@@ -1,18 +1,6 @@
1
-
2
1
  class Livetext::Functions
3
2
 
4
- def facebook_init
5
- fb_appid = _var("facebook.appid")
6
- <<~HTML
7
- window.fbAsyncInit = function() {
8
- FB.init({
9
- appId : '#{fb_appid}',
10
- xfbml : true,
11
- version : 'v2.4'
12
- });
13
- };
14
- HTML
15
- end
3
+ # Needed for Twitter??
16
4
 
17
5
  =begin
18
6
  <!-- Needed: btw what is 'content'?
@@ -25,16 +13,6 @@ class Livetext::Functions
25
13
  -->
26
14
  =end
27
15
 
28
- def facebook_likes
29
- <<~HTML
30
- <div class='fb-like'
31
- data-share='true'
32
- data-width='450'
33
- data-show-faces='true'>
34
- </div>
35
- HTML
36
- end
37
-
38
16
  def twitter_share
39
17
  name, title, url = "", "", "" # FIXME
40
18
  <<~HTML
@@ -0,0 +1 @@
1
+ .include ../../widgets/pages/faq.lt3
@@ -11,7 +11,7 @@
11
11
  $.seek global.lt3
12
12
  $.include blog/head.lt3
13
13
  <body>
14
- $.include blog/banner.lt3
14
+ $.include banner/banner.lt3
15
15
  <div class="content container-fluid mt-4">
16
16
  <div class="row">
17
17
  $.include blog/index.lt3
@@ -29,7 +29,7 @@ post.date.size 15px
29
29
  publish.user root
30
30
  publish.server rubyhacker.com
31
31
  publish.docroot /var/www/
32
- publish.path around_austin
32
+ publish.path stuff
33
33
  publish.proto http
34
34
  .end
35
35
 
@@ -33,6 +33,6 @@ style blog.css
33
33
 
34
34
  <br>
35
35
  <hr>
36
- .post_trailer
36
+ .post_trailer
37
37
  </body>
38
38
  </html>
@@ -6,19 +6,19 @@
6
6
  . likely be the place.
7
7
  . --------------------------------------------------
8
8
 
9
- .mixin liveblog
10
- . ^ get rid of this later
11
-
12
9
  .post 0
13
10
 
14
- .title The new amphitheatre is overrated
11
+ .title This is my title
15
12
  .pubdate 2019-07-09
16
- .views around_austin
13
+ .views stuff
17
14
  .tags
18
15
 
19
16
  .teaser
20
- It used to be that all major concerts played the Erwin Center.
21
-
17
+ This is only a short excerpt from the top of the blog post.
22
18
  .end
23
- Now, depending on what you consider "major," blah blah blah...
19
+
20
+ And now we continue the post.
21
+ Do we have anything to say?
22
+
23
+ Apparently not much.
24
24