jekyll-recker 1.16.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: {}