jekyll-recker 1.2.1 → 1.6.0
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/README.md +105 -0
- data/_includes/figure.html +14 -0
- data/_includes/footer.html +10 -1
- data/_includes/head.html +21 -0
- data/_includes/nav.html +3 -6
- data/_includes/pager.html +13 -0
- data/_layouts/home.html +13 -9
- data/_layouts/page.html +13 -8
- data/_layouts/post.html +20 -28
- data/lib/jekyll-recker.rb +14 -13
- data/lib/jekyll_recker/commands.rb +35 -0
- data/lib/{jekyll-recker → jekyll_recker}/configuration.rb +6 -0
- data/lib/{jekyll-recker → jekyll_recker}/error.rb +0 -0
- data/lib/jekyll_recker/facebook.rb +97 -0
- data/lib/jekyll_recker/filters.rb +15 -0
- data/lib/{jekyll-recker/stats.rb → jekyll_recker/generators.rb} +42 -39
- data/lib/{jekyll-recker → jekyll_recker}/logger.rb +0 -0
- data/lib/jekyll_recker/mixins.rb +29 -0
- data/lib/{jekyll-recker → jekyll_recker}/shell.rb +0 -0
- data/lib/{jekyll-recker → jekyll_recker}/slack.rb +10 -1
- data/lib/{jekyll-recker → jekyll_recker}/tags.rb +1 -1
- data/lib/{jekyll-recker → jekyll_recker}/twitter.rb +10 -2
- data/lib/{jekyll-recker → jekyll_recker}/version.rb +1 -1
- data/lib/{jekyll-recker → jekyll_recker}/words.rb +0 -0
- metadata +104 -35
- data/README.org +0 -204
- data/_layouts/default.html +0 -14
- data/assets/jekyll-recker.scss +0 -110
- data/lib/jekyll-recker/commands.rb +0 -12
- data/lib/jekyll-recker/commands/share.rb +0 -25
- data/lib/jekyll-recker/commands/slack.rb +0 -30
- data/lib/jekyll-recker/commands/tweet.rb +0 -31
- data/lib/jekyll-recker/generators.rb +0 -17
- data/lib/jekyll-recker/mixins.rb +0 -27
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Recker
|
5
|
+
# Filters
|
6
|
+
module Filters
|
7
|
+
# Converts a date object to standard Uhh Yeah Dude format.
|
8
|
+
def uyd_date(date)
|
9
|
+
date.strftime('%A, %B %d %Y')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Liquid::Template.register_filter(Jekyll::Recker::Filters)
|
@@ -1,41 +1,44 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'date'
|
4
|
-
|
5
3
|
module Jekyll
|
6
4
|
module Recker
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
cruncher = cruncher_class.new(site)
|
15
|
-
logger.info "crunching stats.#{cruncher.stats_key}"
|
16
|
-
stats[cruncher.stats_key] = cruncher.crunch
|
17
|
-
end
|
18
|
-
stats
|
19
|
-
end
|
20
|
-
|
21
|
-
# Base Cruncher
|
22
|
-
class BaseCruncher
|
5
|
+
module Generators
|
6
|
+
# Stats Module
|
7
|
+
#
|
8
|
+
# Functions for stats generators.
|
9
|
+
# @abstract
|
10
|
+
module Stats
|
11
|
+
include Mixins::Logging
|
23
12
|
include Jekyll::Filters
|
24
|
-
include DescendantsMixin
|
25
13
|
|
26
|
-
def
|
27
|
-
|
14
|
+
def key
|
15
|
+
self.class.const_get(:KEY)
|
28
16
|
end
|
29
17
|
|
30
|
-
|
18
|
+
def generate(site)
|
19
|
+
@site = site
|
20
|
+
logger.info "crunching stats.#{key}"
|
21
|
+
@site.data['stats'] ||= {}
|
22
|
+
@site.data['stats'][key] = crunch
|
23
|
+
end
|
31
24
|
|
32
|
-
|
25
|
+
def crunch
|
26
|
+
raise NotImplementedError, '#crunch not implemented!'
|
27
|
+
end
|
33
28
|
|
29
|
+
# Calculates the average of a list of numbers.
|
30
|
+
#
|
31
|
+
# @param [Array<Numeric>] numlist list of numbers to be averaged.
|
32
|
+
# @return [Numeric] rounded, calculated average of numlist.
|
34
33
|
def average(numlist)
|
35
34
|
calc = numlist.inject { |sum, el| sum + el }.to_f / numlist.size
|
36
35
|
calc.round
|
37
36
|
end
|
38
37
|
|
38
|
+
# Calculates the total of a list of numbers.
|
39
|
+
#
|
40
|
+
# @param [Array<Numeric>] numlist list of numbers to be totaled.
|
41
|
+
# @return [Numeric] calculated total of numlist.
|
39
42
|
def total(numlist)
|
40
43
|
numlist.inject(0) { |sum, x| sum + x }
|
41
44
|
end
|
@@ -45,22 +48,22 @@ module Jekyll
|
|
45
48
|
end
|
46
49
|
end
|
47
50
|
|
48
|
-
#
|
49
|
-
class
|
50
|
-
|
51
|
-
|
52
|
-
|
51
|
+
# Post Count Generator
|
52
|
+
class PostCount < Jekyll::Generator
|
53
|
+
include Stats
|
54
|
+
|
55
|
+
KEY = 'posts'
|
53
56
|
|
54
57
|
def crunch
|
55
58
|
entries.count.pretty
|
56
59
|
end
|
57
60
|
end
|
58
61
|
|
59
|
-
#
|
60
|
-
class
|
61
|
-
|
62
|
-
|
63
|
-
|
62
|
+
# Word Count Generator
|
63
|
+
class Words < Jekyll::Generator
|
64
|
+
include Stats
|
65
|
+
|
66
|
+
KEY = 'words'
|
64
67
|
|
65
68
|
def crunch
|
66
69
|
total_counts = entries.collect(&:content).map { |c| number_of_words(c) }
|
@@ -71,11 +74,11 @@ module Jekyll
|
|
71
74
|
end
|
72
75
|
end
|
73
76
|
|
74
|
-
# Streak
|
75
|
-
class
|
76
|
-
|
77
|
-
|
78
|
-
|
77
|
+
# Streak Count Generator
|
78
|
+
class Streaks < Jekyll::Generator
|
79
|
+
include Stats
|
80
|
+
|
81
|
+
KEY = 'days'
|
79
82
|
|
80
83
|
def crunch
|
81
84
|
streaks.take(1).map do |count, dates|
|
@@ -94,7 +97,7 @@ module Jekyll
|
|
94
97
|
entry_dates.slice_when do |prev, curr|
|
95
98
|
curr != prev - 1
|
96
99
|
end.each do |dates|
|
97
|
-
first, last = dates.
|
100
|
+
first, last = dates.minmax
|
98
101
|
_streaks << [(last - first).to_i, [first, last]]
|
99
102
|
end
|
100
103
|
_streaks
|
File without changes
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module Recker
|
5
|
+
module Mixins
|
6
|
+
# Descendants
|
7
|
+
module Descendants
|
8
|
+
def self.included(base)
|
9
|
+
base.extend(self)
|
10
|
+
end
|
11
|
+
|
12
|
+
def descendants
|
13
|
+
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Logging
|
18
|
+
module Logging
|
19
|
+
def self.included(base)
|
20
|
+
base.extend(self)
|
21
|
+
end
|
22
|
+
|
23
|
+
def logger
|
24
|
+
Jekyll::Recker.logger
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
File without changes
|
@@ -7,7 +7,16 @@ module Jekyll
|
|
7
7
|
module Recker
|
8
8
|
# Slack
|
9
9
|
class Slack
|
10
|
-
include Jekyll::Recker::
|
10
|
+
include Jekyll::Recker::Mixins::Logging
|
11
|
+
|
12
|
+
def self.share(dry: false)
|
13
|
+
each_in_config(dry: dry) do |client|
|
14
|
+
logger.info "#{client.key}: discovering webhook"
|
15
|
+
client.discover_webhook!
|
16
|
+
logger.info "#{client.key}: posting #{client.latest.data['title']}"
|
17
|
+
client.post_latest!
|
18
|
+
end
|
19
|
+
end
|
11
20
|
|
12
21
|
def self.each_in_config(dry: false)
|
13
22
|
Configuration.slack.map do |key, body|
|
@@ -6,7 +6,15 @@ module Jekyll
|
|
6
6
|
module Recker
|
7
7
|
# Twitter Client
|
8
8
|
class Twitter
|
9
|
-
include
|
9
|
+
include Mixins::Logging
|
10
|
+
|
11
|
+
def self.share(dry: false)
|
12
|
+
client = new(dry: dry)
|
13
|
+
logger.info 'discovering credentials'
|
14
|
+
client.discover_credentials!
|
15
|
+
logger.info "tweeting #{client.latest.data['title']}"
|
16
|
+
client.post_latest!
|
17
|
+
end
|
10
18
|
|
11
19
|
def initialize(dry: false)
|
12
20
|
@dry = dry
|
@@ -53,7 +61,7 @@ module Jekyll
|
|
53
61
|
end
|
54
62
|
|
55
63
|
def extract_from_env
|
56
|
-
values = cred_fieldnames.map { |k| ENV[k.upcase] }
|
64
|
+
values = cred_fieldnames.map { |k| ENV["TWITTER_#{k.upcase}"] }
|
57
65
|
|
58
66
|
return nil if values.any? { |v| v.nil? || v.empty? }
|
59
67
|
|
File without changes
|
metadata
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-recker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Recker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bump
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: pry
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
|
-
type: :
|
34
|
+
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
@@ -39,13 +39,13 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
|
-
type: :
|
48
|
+
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -67,7 +67,21 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: yard
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - ">="
|
@@ -80,6 +94,62 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: jekyll
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.8'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.8'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: koala
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: slack-notifier
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: twitter
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
83
153
|
description:
|
84
154
|
email:
|
85
155
|
- alex@reckerfamily.com
|
@@ -88,33 +158,32 @@ extensions: []
|
|
88
158
|
extra_rdoc_files: []
|
89
159
|
files:
|
90
160
|
- LICENSE
|
91
|
-
- README.
|
161
|
+
- README.md
|
162
|
+
- _includes/figure.html
|
92
163
|
- _includes/footer.html
|
164
|
+
- _includes/head.html
|
93
165
|
- _includes/header.html
|
94
166
|
- _includes/nav.html
|
95
|
-
-
|
167
|
+
- _includes/pager.html
|
96
168
|
- _layouts/home.html
|
97
169
|
- _layouts/page.html
|
98
170
|
- _layouts/post.html
|
99
|
-
- assets/jekyll-recker.scss
|
100
171
|
- lib/jekyll-recker.rb
|
101
|
-
- lib/
|
102
|
-
- lib/
|
103
|
-
- lib/
|
104
|
-
- lib/
|
105
|
-
- lib/
|
106
|
-
- lib/
|
107
|
-
- lib/
|
108
|
-
- lib/
|
109
|
-
- lib/
|
110
|
-
- lib/
|
111
|
-
- lib/
|
112
|
-
- lib/
|
113
|
-
- lib/
|
114
|
-
- lib/
|
115
|
-
|
116
|
-
- lib/jekyll-recker/words.rb
|
117
|
-
homepage: https://www.alexrecker.com/jekyll-recker.html
|
172
|
+
- lib/jekyll_recker/commands.rb
|
173
|
+
- lib/jekyll_recker/configuration.rb
|
174
|
+
- lib/jekyll_recker/error.rb
|
175
|
+
- lib/jekyll_recker/facebook.rb
|
176
|
+
- lib/jekyll_recker/filters.rb
|
177
|
+
- lib/jekyll_recker/generators.rb
|
178
|
+
- lib/jekyll_recker/logger.rb
|
179
|
+
- lib/jekyll_recker/mixins.rb
|
180
|
+
- lib/jekyll_recker/shell.rb
|
181
|
+
- lib/jekyll_recker/slack.rb
|
182
|
+
- lib/jekyll_recker/tags.rb
|
183
|
+
- lib/jekyll_recker/twitter.rb
|
184
|
+
- lib/jekyll_recker/version.rb
|
185
|
+
- lib/jekyll_recker/words.rb
|
186
|
+
homepage: https://www.github.com/arecker/jekyll-recker/
|
118
187
|
licenses:
|
119
188
|
- GPLv3
|
120
189
|
metadata: {}
|
@@ -136,5 +205,5 @@ requirements: []
|
|
136
205
|
rubygems_version: 3.0.3
|
137
206
|
signing_key:
|
138
207
|
specification_version: 4
|
139
|
-
summary:
|
208
|
+
summary: The Greatest Jekyll Plugin in the World
|
140
209
|
test_files: []
|