jekyll-recker 1.16.0 → 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.
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'logger'
4
+
5
+ module JekyllRecker
6
+ # Logging
7
+ module Logging
8
+ def self.included(base)
9
+ base.extend(self)
10
+ end
11
+
12
+ def info(msg)
13
+ Jekyll.logger.info 'jekyll-recker:', msg
14
+ end
15
+
16
+ def logger
17
+ ::Jekyll.logger
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllRecker
4
+ # Math Module
5
+ module Math
6
+ def average(numlist)
7
+ calc = numlist.inject { |sum, el| sum + el }.to_f / numlist.size
8
+ calc.round
9
+ end
10
+
11
+ def total(numlist)
12
+ numlist.inject(0) { |sum, x| sum + x }
13
+ end
14
+
15
+ def occurences(keys, targets)
16
+ results = Hash.new(0)
17
+ targets.each do |target|
18
+ results[target] += 1 if keys.include? target
19
+ end
20
+ results
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler'
4
+
5
+ module JekyllRecker
6
+ # Site
7
+ class Site
8
+ def initialize(site)
9
+ @site = site
10
+ end
11
+
12
+ def entries
13
+ @entries ||= build_entries
14
+ end
15
+
16
+ def latest
17
+ entries.first
18
+ end
19
+
20
+ def production?
21
+ ENV['JEKYLL_ENV'] == 'production'
22
+ end
23
+
24
+ def data
25
+ @site.data
26
+ end
27
+
28
+ def url
29
+ @site.config['url']
30
+ end
31
+
32
+ def word_counts
33
+ entries.collect(&:word_count)
34
+ end
35
+
36
+ def words
37
+ entries.collect(&:words).flatten
38
+ end
39
+
40
+ def dates
41
+ entries.collect(&:date)
42
+ end
43
+
44
+ def images
45
+ exts = ['.jpg', 'jpeg', '.png', '.svg']
46
+ @site.static_files.collect(&:path).select { |f| exts.include? File.extname(f) }
47
+ end
48
+
49
+ def recker_config
50
+ @site.config.fetch('recker', {})
51
+ end
52
+
53
+ def config
54
+ @site.config
55
+ end
56
+
57
+ def graphs_dir
58
+ recker_config.fetch('graphs', 'assets/images/graphs/')
59
+ end
60
+
61
+ def data_dir
62
+ File.join Bundler.root, '_data'
63
+ end
64
+
65
+ private
66
+
67
+ def build_entries
68
+ @site.posts.docs
69
+ .select(&:published?)
70
+ .sort_by(&:date)
71
+ .reverse
72
+ .map { |p| Entry.new(p) }
73
+ end
74
+ end
75
+ end
@@ -4,6 +4,7 @@ require 'slack-notifier'
4
4
  require 'twitter'
5
5
 
6
6
  module JekyllRecker
7
+ # Social Module
7
8
  module Social
8
9
  def self.action(site, args, options)
9
10
  args += %w[slack twitter] if args.empty?
@@ -16,19 +17,21 @@ module JekyllRecker
16
17
  # Backend base class for social sharing backends.
17
18
  # @abstract
18
19
  class Share
19
- include Mixins::Logging
20
+ include Logging
21
+
22
+ attr_reader :site
20
23
 
21
24
  def self.share(site, dry: false)
22
25
  backend = new(site, dry: dry)
23
- logger.info "#{backend.name} - building configuration"
26
+ info "#{backend.name} - building configuration"
24
27
  backend.configure!
25
28
 
26
- logger.info "#{backend.name} - sharing \"#{backend.latest_title}\""
29
+ info "#{backend.name} - sharing \"#{backend.latest_title}\""
27
30
  backend.post!
28
31
  end
29
32
 
30
33
  def initialize(site, dry: false)
31
- @site = site
34
+ @site = Site.new(site)
32
35
  @dry = dry
33
36
  end
34
37
 
@@ -37,29 +40,28 @@ module JekyllRecker
37
40
  end
38
41
 
39
42
  def config
40
- @site.config.fetch('recker', {}).fetch(config_key, {})
43
+ site.recker_config.fetch(config_key, {})
41
44
  end
42
45
 
43
46
  def config_key
44
47
  self.class.const_get(:KEY)
45
48
  end
46
- alias name :config_key
49
+ alias name config_key
47
50
 
48
51
  def post_body
49
- url = File.join @site.config['url'], latest.url
50
52
  <<~BODY
51
- #{latest.data['date'].strftime('%A, %B %-d %Y')}
52
- #{latest.data['title']}
53
- #{url}
53
+ #{latest.title}
54
+ #{latest.subtitle}
55
+ #{File.join site.url, latest.url}
54
56
  BODY
55
57
  end
56
58
 
57
- def latest
58
- @latest ||= @site.posts.docs.last
59
+ def latest_title
60
+ latest.title
59
61
  end
60
62
 
61
- def latest_title
62
- latest.data['title']
63
+ def latest
64
+ site.latest
63
65
  end
64
66
 
65
67
  def configure!
@@ -81,31 +83,36 @@ module JekyllRecker
81
83
  @creds = {}
82
84
  workspaces.each do |key, data|
83
85
  webhook = ENV["SLACK_#{key.upcase}_WEBHOOK"] || extract_from_config(data)
84
- if webhook.nil?
85
- raise "cannot find slack webhook for #{key} workspace!"
86
- end
86
+ raise "cannot find slack webhook for #{key} workspace!" if webhook.nil?
87
87
 
88
88
  @creds[key] = webhook
89
89
  end
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
- logger.info "posting to #{key} workspace"
94
+ info "posting to #{key} workspace"
96
95
  if @dry
97
- logger.info("BEGIN MESSAGE\n#{message_body.strip}\nEND MESSAGE")
96
+ puts "BEGIN MESSAGE\n#{post_body.strip}\nEND MESSAGE"
98
97
  else
99
- ::Slack::Notifier.new(
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)
@@ -140,8 +147,8 @@ module JekyllRecker
140
147
 
141
148
  def post!
142
149
  if dry?
143
- logger.info('tweeting in dry mode, printing message')
144
- logger.info("BEGIN TWEET\n#{post_body}END TWEET")
150
+ info('tweeting in dry mode, printing message')
151
+ puts "BEGIN TWEET\n#{post_body}END TWEET"
145
152
  else
146
153
  @client.update(post_body)
147
154
  end
@@ -1,14 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllRecker
4
+ # Tags
4
5
  module Tags
5
- # Returns the VERSION of the running jekyll-recker gem.
6
+ # Render the current plugin version
6
7
  class Version < Liquid::Tag
7
- def render(_context)
8
- VERSION
8
+ def render(_ctx)
9
+ "v#{JekyllRecker::VERSION}"
9
10
  end
10
11
  end
11
12
  end
12
13
  end
13
14
 
14
- Liquid::Template.register_tag('recker_version', JekyllRecker::Tags::Version)
15
+ Liquid::Template.register_tag('version', JekyllRecker::Tags::Version)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllRecker
4
- VERSION = '1.16.0'
4
+ VERSION = '2.4.0'
5
5
  end
metadata CHANGED
@@ -1,113 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-recker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.0
4
+ version: 2.4.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-07-16 00:00:00.000000000 Z
11
+ date: 2020-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bump
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: pry
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
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
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: fastimage
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
13
  - !ruby/object:Gem::Dependency
112
14
  name: jekyll
113
15
  requirement: !ruby/object:Gem::Requirement
@@ -122,48 +24,6 @@ dependencies:
122
24
  - - "~>"
123
25
  - !ruby/object:Gem::Version
124
26
  version: '3.8'
125
- - !ruby/object:Gem::Dependency
126
- name: mini_magick
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: slack-notifier
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'
153
- - !ruby/object:Gem::Dependency
154
- name: twitter
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :runtime
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
27
  description:
168
28
  email:
169
29
  - alex@reckerfamily.com
@@ -171,28 +31,21 @@ executables: []
171
31
  extensions: []
172
32
  extra_rdoc_files: []
173
33
  files:
174
- - LICENSE
175
- - README.md
176
- - _includes/figure.html
177
- - _includes/footer.html
178
- - _includes/head.html
179
- - _includes/header.html
180
- - _includes/nav.html
181
- - _includes/pager.html
182
- - _layouts/home.html
183
- - _layouts/page.html
184
- - _layouts/post.html
185
- - assets/jekyll-recker.scss
186
34
  - lib/jekyll-recker.rb
187
35
  - lib/jekyll_recker/commands.rb
36
+ - lib/jekyll_recker/date.rb
37
+ - lib/jekyll_recker/entry.rb
188
38
  - lib/jekyll_recker/filters.rb
189
39
  - lib/jekyll_recker/generators.rb
190
- - lib/jekyll_recker/mixins.rb
40
+ - lib/jekyll_recker/graphs.rb
41
+ - lib/jekyll_recker/logging.rb
42
+ - lib/jekyll_recker/math.rb
191
43
  - lib/jekyll_recker/shell.rb
44
+ - lib/jekyll_recker/site.rb
192
45
  - lib/jekyll_recker/social.rb
193
46
  - lib/jekyll_recker/tags.rb
194
47
  - lib/jekyll_recker/version.rb
195
- homepage: https://www.github.com/arecker/jekyll-recker/
48
+ homepage: https://www.github.com/arecker/blog
196
49
  licenses:
197
50
  - GPLv3
198
51
  metadata: {}