jekyll-recker 2.3.1 → 2.4.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/lib/jekyll_recker/entry.rb +1 -1
- data/lib/jekyll_recker/filters.rb +1 -1
- data/lib/jekyll_recker/generators.rb +51 -40
- data/lib/jekyll_recker/graphs.rb +8 -4
- data/lib/jekyll_recker/site.rb +10 -5
- data/lib/jekyll_recker/social.rb +16 -9
- data/lib/jekyll_recker/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f3c029100fd9fc95b7f7b065e17bbb5cd2baf321fd0b3f93aeac96505e816d6
|
4
|
+
data.tar.gz: f66cd31401dd09fd965f34372c117dd26ab582cb8d761d5a00fa1a41352c3e31
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2171c0a55cb2e419ae0c120880fef8e11fd4d01b554327f2adca939f8a92c5c0e0b37934acf58d64bbf276688cc7785aa4c06b46db5a224be721b71a0a3d4805
|
7
|
+
data.tar.gz: f07aadca9f824b3c22bcbca26c208fe29e1ffa6fee993984263456f951d861d58ec2697aed963a9bbd7924c3d8b6282ef2f6857f335ab8a343b3486fef039e88
|
data/lib/jekyll_recker/entry.rb
CHANGED
@@ -8,28 +8,41 @@ module JekyllRecker
|
|
8
8
|
include Date
|
9
9
|
include Logging
|
10
10
|
include Math
|
11
|
-
end
|
12
|
-
|
13
|
-
# Stats Generator
|
14
|
-
class Stats < Jekyll::Generator
|
15
|
-
include Base
|
16
11
|
|
17
12
|
attr_reader :site
|
18
13
|
|
14
|
+
def name
|
15
|
+
self.class.name.split('::').last.downcase
|
16
|
+
end
|
17
|
+
|
19
18
|
def generate(site)
|
20
19
|
@site = Site.new(site)
|
21
|
-
generate_stats!
|
22
20
|
if @site.production?
|
23
|
-
info
|
21
|
+
info "skipping #{name} generator"
|
24
22
|
else
|
25
|
-
info
|
26
|
-
|
23
|
+
info "running #{name} generator"
|
24
|
+
data = crunch
|
25
|
+
File.open(data_file_target, 'w') { |f| f.write(JSON.pretty_generate(data)) } unless data.nil?
|
27
26
|
end
|
28
27
|
end
|
29
28
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
29
|
+
def data_file_target
|
30
|
+
File.join site.data_dir, "#{name}.json"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Stats Generator
|
35
|
+
class Stats < Jekyll::Generator
|
36
|
+
include Base
|
37
|
+
|
38
|
+
attr_reader :site
|
39
|
+
|
40
|
+
def crunch
|
41
|
+
generate_stats
|
42
|
+
end
|
43
|
+
|
44
|
+
def generate_stats
|
45
|
+
{
|
33
46
|
'total_words' => total(site.word_counts),
|
34
47
|
'average_words' => average(site.word_counts),
|
35
48
|
'total_posts' => site.entries.size,
|
@@ -51,45 +64,44 @@ module JekyllRecker
|
|
51
64
|
end
|
52
65
|
|
53
66
|
def swears
|
54
|
-
|
55
|
-
ass
|
56
|
-
asshole
|
57
|
-
booger
|
58
|
-
crap
|
59
|
-
damn
|
60
|
-
fart
|
61
|
-
fuck
|
62
|
-
hell
|
63
|
-
jackass
|
64
|
-
piss
|
65
|
-
poop
|
66
|
-
shit
|
67
|
-
]
|
67
|
+
site.recker_config.fetch('swears', [])
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
#
|
72
|
-
class
|
71
|
+
# Graphs Generator
|
72
|
+
class Graphs < Jekyll::Generator
|
73
73
|
include Base
|
74
74
|
|
75
|
-
|
75
|
+
def crunch
|
76
|
+
JekyllRecker::Graphs.generate_graphs(site)
|
77
|
+
nil
|
78
|
+
end
|
79
|
+
end
|
76
80
|
|
77
|
-
|
78
|
-
|
81
|
+
# Git Generator
|
82
|
+
class Git < Jekyll::Generator
|
83
|
+
include Base
|
79
84
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
85
|
+
def crunch
|
86
|
+
{
|
87
|
+
'commit_count' => Shell.run('git rev-list --count master').chomp
|
88
|
+
}
|
89
|
+
end
|
90
|
+
end
|
84
91
|
|
85
|
-
|
92
|
+
# Image Resize Generator
|
93
|
+
class ImageResize < Jekyll::Generator
|
94
|
+
include Base
|
86
95
|
|
96
|
+
def crunch
|
97
|
+
load_deps!
|
87
98
|
info 'checking images'
|
88
99
|
resizeable_images.each do |f, d|
|
89
100
|
info "resizing #{f} to fit #{d}"
|
90
101
|
image = MiniMagick::Image.new(f)
|
91
102
|
image.resize d
|
92
103
|
end
|
104
|
+
nil
|
93
105
|
end
|
94
106
|
|
95
107
|
def too_big?(width, height)
|
@@ -101,13 +113,12 @@ module JekyllRecker
|
|
101
113
|
require 'mini_magick'
|
102
114
|
end
|
103
115
|
|
104
|
-
def
|
105
|
-
|
116
|
+
def images_without_graphs
|
117
|
+
site.images.reject { |i| i.include?('/graphs/') }
|
106
118
|
end
|
107
119
|
|
108
120
|
def resizeable_images
|
109
|
-
|
110
|
-
with_sizes = without_graphs.map { |f| [f, FastImage.size(f)].flatten }
|
121
|
+
with_sizes = images_without_graphs.map { |f| [f, FastImage.size(f)].flatten }
|
111
122
|
with_sizes.select! { |f| too_big?(f[1], f[2]) }
|
112
123
|
with_sizes.map do |f, w, h|
|
113
124
|
dimensions = if w > h
|
data/lib/jekyll_recker/graphs.rb
CHANGED
@@ -66,14 +66,18 @@ module JekyllRecker
|
|
66
66
|
class Swears
|
67
67
|
include Base
|
68
68
|
|
69
|
-
attr_reader :results
|
70
|
-
|
71
69
|
def initialize(site)
|
72
|
-
@
|
73
|
-
@results.delete('total')
|
70
|
+
@data_dir = site.data_dir
|
74
71
|
@graphs_dir = site.graphs_dir
|
75
72
|
end
|
76
73
|
|
74
|
+
def results
|
75
|
+
path = File.join(@data_dir, 'stats.json')
|
76
|
+
data = JSON.parse(File.read(path))['swears']
|
77
|
+
data.delete('total')
|
78
|
+
data
|
79
|
+
end
|
80
|
+
|
77
81
|
def write
|
78
82
|
g = ::Gruff::Pie.new('800x600')
|
79
83
|
g.theme = Gruff::Themes::PASTEL
|
data/lib/jekyll_recker/site.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'bundler'
|
4
|
+
|
3
5
|
module JekyllRecker
|
4
6
|
# Site
|
5
7
|
class Site
|
@@ -15,7 +17,6 @@ module JekyllRecker
|
|
15
17
|
entries.first
|
16
18
|
end
|
17
19
|
|
18
|
-
|
19
20
|
def production?
|
20
21
|
ENV['JEKYLL_ENV'] == 'production'
|
21
22
|
end
|
@@ -57,14 +58,18 @@ module JekyllRecker
|
|
57
58
|
recker_config.fetch('graphs', 'assets/images/graphs/')
|
58
59
|
end
|
59
60
|
|
61
|
+
def data_dir
|
62
|
+
File.join Bundler.root, '_data'
|
63
|
+
end
|
64
|
+
|
60
65
|
private
|
61
66
|
|
62
67
|
def build_entries
|
63
68
|
@site.posts.docs
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
69
|
+
.select(&:published?)
|
70
|
+
.sort_by(&:date)
|
71
|
+
.reverse
|
72
|
+
.map { |p| Entry.new(p) }
|
68
73
|
end
|
69
74
|
end
|
70
75
|
end
|
data/lib/jekyll_recker/social.rb
CHANGED
@@ -46,7 +46,7 @@ module JekyllRecker
|
|
46
46
|
def config_key
|
47
47
|
self.class.const_get(:KEY)
|
48
48
|
end
|
49
|
-
alias
|
49
|
+
alias name config_key
|
50
50
|
|
51
51
|
def post_body
|
52
52
|
<<~BODY
|
@@ -90,22 +90,29 @@ module JekyllRecker
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def post!
|
93
|
-
message_body = ::Slack::Notifier::Util::LinkFormatter.format(post_body)
|
94
93
|
workspaces.each do |key, config|
|
95
94
|
info "posting to #{key} workspace"
|
96
95
|
if @dry
|
97
|
-
puts "BEGIN MESSAGE\n#{
|
96
|
+
puts "BEGIN MESSAGE\n#{post_body.strip}\nEND MESSAGE"
|
98
97
|
else
|
99
|
-
|
100
|
-
@creds[key].strip,
|
101
|
-
channel: config.fetch('channel'),
|
102
|
-
username: config.fetch('username'),
|
103
|
-
icon_emoji: config.fetch('emoji')
|
104
|
-
).post(text: message_body)
|
98
|
+
post(key, config)
|
105
99
|
end
|
106
100
|
end
|
107
101
|
end
|
108
102
|
|
103
|
+
def post(key, config)
|
104
|
+
::Slack::Notifier.new(
|
105
|
+
@creds[key].strip,
|
106
|
+
channel: config.fetch('channel'),
|
107
|
+
username: config.fetch('username'),
|
108
|
+
icon_emoji: config.fetch('emoji')
|
109
|
+
).post(text: message_body)
|
110
|
+
end
|
111
|
+
|
112
|
+
def post_body
|
113
|
+
::Slack::Notifier::Util::LinkFormatter.format(super)
|
114
|
+
end
|
115
|
+
|
109
116
|
private
|
110
117
|
|
111
118
|
def extract_from_config(data)
|