jekyll-recker 2.4.0 → 2.5.0

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