jekyll-recker 2.4.0 → 2.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f3c029100fd9fc95b7f7b065e17bbb5cd2baf321fd0b3f93aeac96505e816d6
4
- data.tar.gz: f66cd31401dd09fd965f34372c117dd26ab582cb8d761d5a00fa1a41352c3e31
3
+ metadata.gz: 94c8ec595131e2f6ae35840a4717fed7d8795e7756068121719b5b13546ad32c
4
+ data.tar.gz: 7b17a5e58aa2c2f62f284c69e46b0ec7bfbe6db25b825d018f2c7bbab1509eb2
5
5
  SHA512:
6
- metadata.gz: 2171c0a55cb2e419ae0c120880fef8e11fd4d01b554327f2adca939f8a92c5c0e0b37934acf58d64bbf276688cc7785aa4c06b46db5a224be721b71a0a3d4805
7
- data.tar.gz: f07aadca9f824b3c22bcbca26c208fe29e1ffa6fee993984263456f951d861d58ec2697aed963a9bbd7924c3d8b6282ef2f6857f335ab8a343b3486fef039e88
6
+ metadata.gz: 2ee477dad55b742aa114c8210898c287a3926e10d3f4cdf01dc363ad568f4565769ea8e8a0fba71083086546e2bbf379bcfe2bb690865528996de4fd90affa8f
7
+ data.tar.gz: 3a173b2a612f8a92d0293cd4bc6f30751b8a7ef59acf99ffa40da367a2f6f8e47878a8acf5d817108c51599d845335886f4ba3f04fd52e4892dfd9dd0807de47
@@ -0,0 +1,114 @@
1
+ body {
2
+ max-width: 750px;
3
+ margin: 0 auto;
4
+ padding: 10px;
5
+ font-size: 16px;
6
+ line-height: 1.5;
7
+ -webkit-font-smoothing: antialiased;
8
+ -moz-osx-font-smoothing: grayscale;
9
+ }
10
+
11
+ * {
12
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
13
+ }
14
+
15
+ .post p {
16
+ font-size: 18px;
17
+ }
18
+
19
+ code, pre, .code {
20
+ font-family: monospace;
21
+ }
22
+
23
+ .title {
24
+ margin: 0;
25
+ }
26
+
27
+ .subtitle {
28
+ font-size: 18px;
29
+ margin: 0;
30
+ }
31
+
32
+ blockquote, small, figcaption, .subtitle {
33
+ color: #6f7370;
34
+ }
35
+
36
+ figure {
37
+ text-align: left;
38
+ }
39
+
40
+ figure img {
41
+ width: 100%;
42
+ height: auto;
43
+ max-width: 625px;
44
+ margin-right: auto;
45
+ display: block;
46
+ }
47
+
48
+ figure figcaption p {
49
+ font-style: italic;
50
+ line-height: 1.3;
51
+ margin-top: 10px;
52
+ }
53
+
54
+ figure {
55
+ text-align: left;
56
+ margin-top: 20px;
57
+ margin-bottom: 20px;
58
+ margin-left: 0;
59
+ max-width: 400px;
60
+ }
61
+
62
+ .float-right {
63
+ float: right;
64
+ }
65
+
66
+ .clearfix::after {
67
+ content: "";
68
+ clear: both;
69
+ display: block;
70
+ }
71
+
72
+ .column {
73
+ float: left;
74
+ width: 50%;
75
+ }
76
+
77
+ .show-on-mobile {
78
+ display: none;
79
+ }
80
+
81
+ @media screen and (max-width: 600px) {
82
+ .column {
83
+ width: 100%;
84
+ }
85
+
86
+ .hide-on-mobile {
87
+ display: none;
88
+ }
89
+
90
+ .show-on-mobile {
91
+ display: block;
92
+ }
93
+ }
94
+
95
+ /* Clear floats after the columns */
96
+ .row:after {
97
+ content: "";
98
+ display: table;
99
+ clear: both;
100
+ }
101
+
102
+ .crowded h3, .crowded h2, .crowded p, .crowded ul {
103
+ margin-bottom: 0px;
104
+ margin-top: 5px;
105
+ }
106
+
107
+ td, nav span a {
108
+ padding-right: 5px;
109
+ }
110
+
111
+ footer small::after {
112
+ content:"\a";
113
+ white-space: pre;
114
+ }
@@ -3,46 +3,22 @@
3
3
  module JekyllRecker
4
4
  # Generators Module
5
5
  module Generators
6
- # Base Generator
7
- module Base
6
+ # Stats Generator
7
+ class Stats < Jekyll::Generator
8
8
  include Date
9
9
  include Logging
10
10
  include Math
11
11
 
12
12
  attr_reader :site
13
13
 
14
- def name
15
- self.class.name.split('::').last.downcase
16
- end
17
-
18
14
  def generate(site)
19
15
  @site = Site.new(site)
20
- if @site.production?
21
- info "skipping #{name} generator"
22
- else
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?
26
- end
27
- end
28
-
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
16
+ info 'calculating statistics'
17
+ site.data['stats'] = stats
42
18
  end
43
19
 
44
- def generate_stats
45
- {
20
+ def stats
21
+ @stats ||= {
46
22
  'total_words' => total(site.word_counts),
47
23
  'average_words' => average(site.word_counts),
48
24
  'total_posts' => site.entries.size,
@@ -70,49 +46,48 @@ module JekyllRecker
70
46
 
71
47
  # Graphs Generator
72
48
  class Graphs < Jekyll::Generator
73
- include Base
74
-
75
- def crunch
76
- JekyllRecker::Graphs.generate_graphs(site)
77
- nil
78
- end
79
- end
49
+ include Logging
80
50
 
81
- # Git Generator
82
- class Git < Jekyll::Generator
83
- include Base
51
+ attr_reader :site
84
52
 
85
- def crunch
86
- {
87
- 'commit_count' => Shell.run('git rev-list --count master').chomp
88
- }
53
+ def generate(site)
54
+ @site = Site.new(site)
55
+ if @site.production? && @site.recker_config.fetch('production_skip_graphs', true)
56
+ info 'skipping graphs (production)'
57
+ else
58
+ info 'generating graphs'
59
+ JekyllRecker::Graphs.generate_graphs(@site)
60
+ end
89
61
  end
90
62
  end
91
63
 
92
64
  # Image Resize Generator
93
65
  class ImageResize < Jekyll::Generator
94
- include Base
95
-
96
- def crunch
97
- load_deps!
98
- info 'checking images'
99
- resizeable_images.each do |f, d|
100
- info "resizing #{f} to fit #{d}"
101
- image = MiniMagick::Image.new(f)
102
- image.resize d
66
+ require 'fastimage'
67
+ require 'mini_magick'
68
+
69
+ include Logging
70
+
71
+ attr_reader :site
72
+
73
+ def generate(site)
74
+ @site = Site.new(site)
75
+ if @site.production? && @site.recker_config.fetch('production_skip_images', true)
76
+ info 'skipping image resizing (production)'
77
+ else
78
+ info 'checking images sizes'
79
+ resizeable_images.each do |f, d|
80
+ info "resizing #{f} to fit #{d}"
81
+ image = MiniMagick::Image.new(f)
82
+ image.resize d
83
+ end
103
84
  end
104
- nil
105
85
  end
106
86
 
107
87
  def too_big?(width, height)
108
88
  width > 800 || height > 800
109
89
  end
110
90
 
111
- def load_deps!
112
- require 'fastimage'
113
- require 'mini_magick'
114
- end
115
-
116
91
  def images_without_graphs
117
92
  site.images.reject { |i| i.include?('/graphs/') }
118
93
  end
@@ -130,5 +105,59 @@ module JekyllRecker
130
105
  end
131
106
  end
132
107
  end
108
+
109
+ # Code Coverage Generator
110
+ class CodeCoverage < Jekyll::Generator
111
+ include Logging
112
+
113
+ attr_reader :site
114
+
115
+ def generate(site)
116
+ @site = Site.new(site)
117
+ info 'running tests'
118
+ Shell.run 'rspec'
119
+ info 'reading code coverage'
120
+ @site.data['coverage'] = JSON.parse(File.read(tmp_file))
121
+ end
122
+
123
+ private
124
+
125
+ def tmp_file
126
+ site.tmp_join('coverage.json')
127
+ end
128
+ end
129
+
130
+ # Yard Generator
131
+ class Yard < Jekyll::Generator
132
+ include Logging
133
+
134
+ attr_reader :site
135
+
136
+ def generate(site)
137
+ @site = Site.new(site)
138
+ info 'generating documentation'
139
+ Shell.run "yard -o #{@site.site_join('doc')} -q"
140
+ end
141
+ end
142
+
143
+ # Git History Generator
144
+ class GitHistory < Jekyll::Generator
145
+ include Logging
146
+
147
+ attr_reader :site
148
+
149
+ def generate(site)
150
+ @site = Site.new(site)
151
+ info 'reading git history'
152
+ site.data['git'] = {
153
+ 'commit_count' => commit_count
154
+ }
155
+ end
156
+
157
+ def commit_count
158
+ @commit_count ||= Shell.run('git rev-list --count master').chomp
159
+ end
160
+ end
133
161
  end
134
162
  end
163
+
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler'
4
-
5
3
  module JekyllRecker
6
4
  # Graphs module
7
5
  module Graphs
@@ -16,7 +14,7 @@ module JekyllRecker
16
14
  attr_reader :site
17
15
 
18
16
  def graphs_join(path)
19
- File.join Bundler.root, @graphs_dir, path
17
+ File.join site.root, @graphs_dir, path
20
18
  end
21
19
  end
22
20
 
@@ -67,13 +65,11 @@ module JekyllRecker
67
65
  include Base
68
66
 
69
67
  def initialize(site)
70
- @data_dir = site.data_dir
71
- @graphs_dir = site.graphs_dir
68
+ @site = site
72
69
  end
73
70
 
74
71
  def results
75
- path = File.join(@data_dir, 'stats.json')
76
- data = JSON.parse(File.read(path))['swears']
72
+ data = site.data['stats']['swears'].clone
77
73
  data.delete('total')
78
74
  data
79
75
  end
@@ -85,7 +81,7 @@ module JekyllRecker
85
81
  g.legend_at_bottom = true
86
82
  g.minimum_value = 0
87
83
  results.each { |w, n| g.data w, n }
88
- g.write(graphs_join('swears.png'))
84
+ g.write(site.graphs_join('swears.png'))
89
85
  end
90
86
  end
91
87
  end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler'
4
-
5
3
  module JekyllRecker
6
4
  # Site
7
5
  class Site
@@ -46,6 +44,14 @@ module JekyllRecker
46
44
  @site.static_files.collect(&:path).select { |f| exts.include? File.extname(f) }
47
45
  end
48
46
 
47
+ def root
48
+ File.absolute_path(File.join(__dir__, '../../'))
49
+ end
50
+
51
+ def root_join(path)
52
+ File.join(root, path)
53
+ end
54
+
49
55
  def recker_config
50
56
  @site.config.fetch('recker', {})
51
57
  end
@@ -59,7 +65,19 @@ module JekyllRecker
59
65
  end
60
66
 
61
67
  def data_dir
62
- File.join Bundler.root, '_data'
68
+ File.join root, '_data'
69
+ end
70
+
71
+ def tmp_join(path)
72
+ File.join root, 'tmp', path
73
+ end
74
+
75
+ def graphs_join(path)
76
+ File.join root, 'assets/images/graphs/', path
77
+ end
78
+
79
+ def site_join(path)
80
+ File.join(root, '_site', path)
63
81
  end
64
82
 
65
83
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllRecker
4
- VERSION = '2.4.0'
4
+ VERSION = '2.5.0'
5
5
  end
@@ -0,0 +1,2 @@
1
+ *
2
+ !.gitignore
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-recker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.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-26 00:00:00.000000000 Z
11
+ date: 2020-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fastimage
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
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: gruff
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: jekyll
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +52,90 @@ dependencies:
24
52
  - - "~>"
25
53
  - !ruby/object:Gem::Version
26
54
  version: '3.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mini_magick
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
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: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
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: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
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: slack-notifier
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
+ - !ruby/object:Gem::Dependency
112
+ name: twitter
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: yard
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'
27
139
  description:
28
140
  email:
29
141
  - alex@reckerfamily.com
@@ -31,6 +143,7 @@ executables: []
31
143
  extensions: []
32
144
  extra_rdoc_files: []
33
145
  files:
146
+ - assets/site.css
34
147
  - lib/jekyll-recker.rb
35
148
  - lib/jekyll_recker/commands.rb
36
149
  - lib/jekyll_recker/date.rb
@@ -45,6 +158,7 @@ files:
45
158
  - lib/jekyll_recker/social.rb
46
159
  - lib/jekyll_recker/tags.rb
47
160
  - lib/jekyll_recker/version.rb
161
+ - tmp/.gitignore
48
162
  homepage: https://www.github.com/arecker/blog
49
163
  licenses:
50
164
  - GPLv3