bankrupt 2.1.1 → 2.1.2
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 +4 -4
- data/.rubocop.yml +4 -1
- data/CHANGELOG.md +4 -0
- data/README.md +2 -0
- data/lib/bankrupt.rb +44 -10
- data/lib/bankrupt/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4a9d75977ce24ba0712d558d3ab5003c1877e5f2099af75911788f3f0ef7fd53
|
|
4
|
+
data.tar.gz: 7996990b475cc9cca5df4aade17e7a2815bab0ab85edb6d76fd3083f4cfef4d3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 15dd67b22ac708a464dfce8b95214661bb1fc90dc10e7ad4199aa685582cd9a5acf48f19ff8459494e19cdc7f3ec79b7de00bb3a3c346ba509e753e19a4ffcd6
|
|
7
|
+
data.tar.gz: 2af9d31bfcc234aa2e845b0a34b9fc718f71f86af0361356c0e088a0410f58136952dc7d18ac8ab2e34336b9e82cbc8ea3654d6b1b929ce462571a37fbc755e4
|
data/.rubocop.yml
CHANGED
|
@@ -7,13 +7,16 @@ AllCops:
|
|
|
7
7
|
Layout/ExtraSpacing:
|
|
8
8
|
AllowForAlignment: false
|
|
9
9
|
|
|
10
|
+
Metrics/AbcSize:
|
|
11
|
+
Max: 20
|
|
12
|
+
|
|
10
13
|
Metrics/BlockLength:
|
|
11
14
|
Max: 100
|
|
12
15
|
Exclude:
|
|
13
16
|
- 'spec/**/*_spec.rb'
|
|
14
17
|
|
|
15
18
|
Metrics/MethodLength:
|
|
16
|
-
Max:
|
|
19
|
+
Max: 20
|
|
17
20
|
|
|
18
21
|
RSpec/DescribeClass:
|
|
19
22
|
Exclude:
|
data/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
This file keeps track of changes between releases for the bankrupt project
|
|
4
4
|
which adheres to [semantic versioning](https://semver.org).
|
|
5
5
|
|
|
6
|
+
## v2.1.2 2020-01-20
|
|
7
|
+
|
|
8
|
+
Take options into account to ensure unique asset lookups.
|
|
9
|
+
|
|
6
10
|
## v2.1.1 2020-01-09
|
|
7
11
|
|
|
8
12
|
Ensure that the `purge` task works with hashless assets.
|
data/README.md
CHANGED
data/lib/bankrupt.rb
CHANGED
|
@@ -49,9 +49,6 @@ module Bankrupt
|
|
|
49
49
|
#
|
|
50
50
|
# @todo we compute the options on every call, we should do the
|
|
51
51
|
# lookup first and short circuit
|
|
52
|
-
# @todo lookup needs to be based on path _and_ options so that the
|
|
53
|
-
# same asset can be used in multiple places with e.g. different
|
|
54
|
-
# css classes applied
|
|
55
52
|
#
|
|
56
53
|
# @param path [String] relative (from public) path to the img
|
|
57
54
|
# @param options [Hash] additional attributes to add to the img tag
|
|
@@ -60,7 +57,7 @@ module Bankrupt
|
|
|
60
57
|
o = Hash(options).map { |k, v| "#{k}='#{v}'" }.join(' ')
|
|
61
58
|
|
|
62
59
|
asset_html(path, [IMAGE_CDN.chomp, o].join(' '),
|
|
63
|
-
[IMAGE_LOCAL.chomp, o].join(' '))
|
|
60
|
+
[IMAGE_LOCAL.chomp, o].join(' '), options)
|
|
64
61
|
end
|
|
65
62
|
|
|
66
63
|
# Return a javascript html tag for the asset.
|
|
@@ -95,9 +92,14 @@ module Bankrupt
|
|
|
95
92
|
# Return a precomputed asset path if it exists
|
|
96
93
|
#
|
|
97
94
|
# @param path [String] asset on which to perform the lookup
|
|
95
|
+
# @params options [String] the options string to use in the lookup
|
|
98
96
|
# @return [String] the rendered slim template with the asset in place
|
|
99
|
-
def lookup(path)
|
|
100
|
-
|
|
97
|
+
def lookup(path, options = nil)
|
|
98
|
+
if actual_options?(options)
|
|
99
|
+
@_assets.fetch([path, options].join('?'))
|
|
100
|
+
else
|
|
101
|
+
@_assets.fetch(path)
|
|
102
|
+
end
|
|
101
103
|
rescue KeyError
|
|
102
104
|
nil
|
|
103
105
|
end
|
|
@@ -133,24 +135,56 @@ module Bankrupt
|
|
|
133
135
|
# @param path [String] relative path to the asset
|
|
134
136
|
# @param cdn [String] a slim template for generating a cdn asset
|
|
135
137
|
# @param local [String] a slim template for generating a local asset
|
|
138
|
+
# @param options [String] options as a string to make unique lookups
|
|
136
139
|
# @return [String] the asset html
|
|
137
|
-
def asset_html(path, cdn, local)
|
|
138
|
-
|
|
140
|
+
def asset_html(path, cdn, local, options = nil)
|
|
141
|
+
opts = options_string(options)
|
|
142
|
+
|
|
143
|
+
if (asset = lookup("/#{path}", opts))
|
|
139
144
|
return asset
|
|
140
145
|
end
|
|
141
146
|
|
|
147
|
+
lookup_path = "/#{actual_options?(opts) ? [path, opts].join('?') : path}"
|
|
148
|
+
|
|
142
149
|
begin
|
|
143
150
|
details = ASSETS.fetch(path)
|
|
144
151
|
|
|
145
152
|
fullpath = create_fullpath(path, details[:md5], details[:hashless])
|
|
146
153
|
|
|
147
|
-
@_assets[
|
|
154
|
+
@_assets[lookup_path] = Slim::Template.new { cdn }.render(
|
|
148
155
|
ASSET.new(fullpath, details[:sri])
|
|
149
156
|
)
|
|
150
157
|
rescue KeyError
|
|
151
|
-
@_assets[
|
|
158
|
+
@_assets[lookup_path] = Slim::Template.new { local }.render(
|
|
152
159
|
ASSET.new("/#{path}", nil)
|
|
153
160
|
)
|
|
154
161
|
end
|
|
155
162
|
end
|
|
163
|
+
|
|
164
|
+
# Turn the options hash into a concatenated string for use in the lookup.
|
|
165
|
+
#
|
|
166
|
+
# @param options [Hash] the options has to convert
|
|
167
|
+
# @return [String] concatenated options suitable for use in lookups
|
|
168
|
+
def options_string(options)
|
|
169
|
+
return nil if Hash(options).size.zero?
|
|
170
|
+
|
|
171
|
+
options.map do |k, v|
|
|
172
|
+
[k.to_s, v.to_s].join
|
|
173
|
+
end.join.gsub(/[^A-Za-z0-9\-_]/, '')
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Determine if we actually have options regardless if input is a string,
|
|
177
|
+
# hash, or nil.
|
|
178
|
+
#
|
|
179
|
+
# @param options [String, Hash] options to check
|
|
180
|
+
# @return [Boolean] true if there are options, false otherwise
|
|
181
|
+
def actual_options?(options)
|
|
182
|
+
return false if options.nil?
|
|
183
|
+
|
|
184
|
+
if (options.is_a?(String) || options.is_a?(Hash)) && !options.size.zero?
|
|
185
|
+
true
|
|
186
|
+
else
|
|
187
|
+
false
|
|
188
|
+
end
|
|
189
|
+
end
|
|
156
190
|
end
|
data/lib/bankrupt/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bankrupt
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.
|
|
4
|
+
version: 2.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mario Finelli
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-01-
|
|
11
|
+
date: 2020-01-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: slim
|