jekyll_picture_tag 1.5.0 → 1.6.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: 8c92364f9a864fd33948b32ddfb9593b6256d1f14da56cf821175189b30c2ea4
4
- data.tar.gz: ea0e199aaafcef76906b61de9a03170c84e6e6e2771bcaf2aa2e9ace7223ca80
3
+ metadata.gz: 938a170ac5a3ee774c6d8b95ac2a34e20a1edad04937acf49c7e7bdd081f3b81
4
+ data.tar.gz: 1648ce3bdf88de7acf55c17d675bfab1ce641cf00a1138b3cf32abafc4824e96
5
5
  SHA512:
6
- metadata.gz: 990f28ad52b23265ae10ab7430060fddc5ef902b03d87fb9fe4d0796dc5ff221720a277d5abca89bdf2cc8973c41994a03dcae8a1ef9ba459af1ac29c53d999b
7
- data.tar.gz: cfbd031a3741f63e9653cf098e5e95af411d52081f5b06ca7497d89ad64ed93dd762a0f1655c9752b18104bb913fde0854a157c0948796372439f1d7f026c99e
6
+ metadata.gz: ce995d57c31dd2beb97c13288a05cca94eaa2ce242e30bcfaf643154dbeec099ce5fa14566b54bd8fc14b21cf8f9da86028fa583f71ad965f368b9db46930ecf
7
+ data.tar.gz: 105c64ae46f7a5a92c7a198c3ae48e6d49d16493e619107afd0d7c473f577bde43c3baebdfda0692e927fe915f1743dd86ffe8aad7b09c0b48b6b50136625844
@@ -6,6 +6,7 @@ picture:
6
6
  relative_url: true
7
7
  cdn_environments: ['production']
8
8
  nomarkdown: true
9
+ ignore_missing_images: false
9
10
 
10
11
  url: ''
11
12
  baseurl: ''
@@ -4,12 +4,14 @@ class GeneratedImage
4
4
  require 'mini_magick'
5
5
  require 'fastimage'
6
6
 
7
+ attr_reader :width
8
+
7
9
  def initialize(source_file:, width:, format:)
8
10
  @source = source_file
9
11
  @width = width
10
12
  @format = format
11
13
 
12
- generate_image unless File.exist? absolute_filename
14
+ generate_image unless File.exist?(absolute_filename) || @source.missing
13
15
  end
14
16
 
15
17
  def name
@@ -23,10 +25,6 @@ class GeneratedImage
23
25
  @absolute_filename ||= File.join(PictureTag.config.dest_dir, name)
24
26
  end
25
27
 
26
- def width
27
- @width
28
- end
29
-
30
28
  private
31
29
 
32
30
  def generate_image
@@ -45,7 +43,7 @@ class GeneratedImage
45
43
 
46
44
  image.write absolute_filename
47
45
 
48
- FileUtils.chmod(0644, absolute_filename)
46
+ FileUtils.chmod(0o644, absolute_filename)
49
47
  end
50
48
 
51
49
  # Make sure destination directory exists
@@ -14,7 +14,7 @@ module PictureTag
14
14
  # Digs into jekyll context, returns current environment
15
15
  def jekyll_env
16
16
  # It would be really great if the jekyll devs actually documented
17
- # the context object.
17
+ # the context object.
18
18
  PictureTag.context.environments.first['jekyll']['environment']
19
19
  end
20
20
 
@@ -51,6 +51,19 @@ module PictureTag
51
51
  Utils.markdown_page? && self['picture']['nomarkdown']
52
52
  end
53
53
 
54
+ def continue_on_missing?
55
+ setting = @content['picture']['ignore_missing_images']
56
+
57
+ # Config setting can be a string, an array, or a boolean
58
+ if setting.is_a? Array
59
+ setting.include? jekyll_env
60
+ elsif setting.is_a? String
61
+ setting == jekyll_env
62
+ else
63
+ setting
64
+ end
65
+ end
66
+
54
67
  private
55
68
 
56
69
  def build_config
@@ -84,14 +97,14 @@ module PictureTag
84
97
  # Juuust complicated enough to extract to its own function.
85
98
  def cdn?
86
99
  self['picture']['cdn_url'] &&
87
- self['picture']['cdn_environments'].include?( jekyll_env )
100
+ self['picture']['cdn_environments'].include?(jekyll_env)
88
101
  end
89
102
 
90
103
  # https://example.com/my-base-path/assets/generated-images/image.jpg
91
104
  # ^^^^^^^^^^^^^^^^^^^^
92
105
  # | domain | baseurl | j-p-t output dir | filename
93
106
  def domain
94
- if cdn?
107
+ if cdn?
95
108
  self['picture']['cdn_url']
96
109
  elsif self['picture']['relative_url']
97
110
  ''
@@ -106,12 +119,11 @@ module PictureTag
106
119
  def url_prefix
107
120
  # We use file.join because the ruby url methods don't like relative
108
121
  # urls.
109
- File.join(
110
- domain,
111
- self['baseurl'],
112
- )
122
+ File.join(
123
+ domain,
124
+ self['baseurl']
125
+ )
113
126
  end
114
-
115
127
  end
116
128
  end
117
129
  end
@@ -60,8 +60,8 @@ module PictureTag
60
60
 
61
61
  def no_preset
62
62
  Utils.warning(
63
- " Preset \"#{@name}\" not found in _data/picture.yml under "\
64
- 'markup_presets key. Using default values.'
63
+ " Preset \"#{@name}\" not found in #{PictureTag.config['data_dir']}/"\
64
+ + 'picture.yml under markup_presets key. Using default values.'
65
65
  )
66
66
 
67
67
  {}
@@ -3,7 +3,7 @@ module PictureTag
3
3
  # advantage by storing expensive file reads and writes in instance variables,
4
4
  # to be reused by many different source images.
5
5
  class SourceImage
6
- attr_reader :name, :shortname
6
+ attr_reader :name, :shortname, :missing
7
7
 
8
8
  def initialize(relative_filename)
9
9
  @shortname = relative_filename
@@ -18,12 +18,12 @@ module PictureTag
18
18
  size[:width]
19
19
  end
20
20
 
21
- def aspect_ratio
22
- @aspect_ratio ||= size[:width].to_f / size[:height].to_f
23
- end
24
-
25
21
  def digest
26
- @digest ||= Digest::MD5.hexdigest(File.read(@name))[0..5]
22
+ @digest ||= if @missing
23
+ 'x' * 6
24
+ else
25
+ Digest::MD5.hexdigest(File.read(@name))[0..5]
26
+ end
27
27
  end
28
28
 
29
29
  # Includes path relative to default sorce folder, and the original filename.
@@ -40,7 +40,12 @@ module PictureTag
40
40
  private
41
41
 
42
42
  def build_size
43
- width, height = FastImage.size(@name)
43
+ if @missing
44
+ width = 999_999
45
+ height = 999_999
46
+ else
47
+ width, height = FastImage.size(@name)
48
+ end
44
49
 
45
50
  {
46
51
  width: width,
@@ -52,11 +57,34 @@ module PictureTag
52
57
  def grab_file(source_file)
53
58
  source_name = File.join(PictureTag.config.source_dir, source_file)
54
59
 
55
- unless File.exist? source_name
56
- raise "Jekyll Picture Tag could not find #{source_name}."
60
+ if File.exist? source_name
61
+ @missing = false
62
+
63
+ elsif PictureTag.config.continue_on_missing?
64
+ @missing = true
65
+ Utils.warning missing_image_warning(source_name)
66
+
67
+ else
68
+ raise missing_image_error(source_name)
57
69
  end
58
70
 
59
71
  source_name
60
72
  end
73
+
74
+ def missing_image_warning(source_name)
75
+ <<~HEREDOC
76
+ Could not find #{source_name}. Your site will have broken images in it.
77
+ Continuing.
78
+ HEREDOC
79
+ end
80
+
81
+ def missing_image_error(source_name)
82
+ <<~HEREDOC
83
+ Jekyll Picture Tag could not find #{source_name}. You can force the
84
+ build to continue anyway by setting "picture: ignore_missing_images:
85
+ true" in "_config.yml". This setting can also accept a jekyll build
86
+ environment, or an array of environments.
87
+ HEREDOC
88
+ end
61
89
  end
62
90
  end
@@ -1,3 +1,3 @@
1
1
  module PictureTag
2
- VERSION = '1.5.0'.freeze
2
+ VERSION = '1.6.0'.freeze
3
3
  end
data/readme.md CHANGED
@@ -178,6 +178,9 @@ modifications and I'll take care of it.
178
178
 
179
179
  # Release History
180
180
 
181
+ * 1.6.0 Jul 2, 2019:
182
+ * Missing Preset warning respects `data_dir` setting
183
+ * Add `continue_on_missing` option
181
184
  * 1.5.0 Jun 26, 2019:
182
185
  * better `{::nomarkdown}` necessity detection
183
186
  * allow user to override `{::nomarkdown}` autodetection
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll_picture_tag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Wierzbowski
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-06-26 00:00:00.000000000 Z
13
+ date: 2019-07-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler