inline_svg 1.3.1 → 1.4.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.

Potentially problematic release.


This version of inline_svg might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f01fd31a0bdd3ab4c9e7ea1f60019c63f1bab406
4
- data.tar.gz: 8e2166fe6324a179fa700c8754df55e94432f511
2
+ SHA256:
3
+ metadata.gz: 52f5490767e351a088411f8254fb15e480581f7ea1bdff75a2215381c9fb2b78
4
+ data.tar.gz: f99942d0bd757bfe3dae3b9d4b0020f66241c1303c918b9d959e59b858b53135
5
5
  SHA512:
6
- metadata.gz: 14fc0204ff18a3d6c7dd99d3e56d7c1f7f533ed249a4e62a8bc7bbfdcfc5bcd23854de446e200a60c0cc71c208f81a318e8191fed5de7ad679ef735fe9663f0a
7
- data.tar.gz: 5d2ead12b0f658e540285c62a88b4e062f1c646385bf4488e6a22813a52b39e795a61ab0aeb9524db89a7e8672ab1e4796259433c9572f9fc881387761fad412
6
+ metadata.gz: 26f337f5bfc1dcd438ec10a7d4d4fd0a3404a57bc9563cb1b0ec3a0fa119f18f1fd95436be80f682a0f9d4a43dd3876fe5a79589a875192a6dc302801e486c13
7
+ data.tar.gz: f273c2270832a82a1edf9a964f1e52f63fc6a0f8156967e7fea29bc04b11767b70ddd3a26ef2cb152e8af0804fc769f03d28d4876ed9fb8472380f0670cab83b
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3
4
+ - 2.4
5
+ - 2.5
6
+ before_install:
7
+ - gem install -v 2.0.1 bundler --no-rdoc --no-ri
8
+ script: bundle exec rspec
@@ -5,6 +5,16 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
  ## [Unreleased][unreleased]
6
6
  - Nothing
7
7
 
8
+ ## [1.4.0] - 2019-04-19
9
+ ### Fixed
10
+ - Prevent invalid XML names being generated via IdGenerator
11
+ [#87](https://github.com/jamesmartin/inline_svg/issues/87)
12
+ Thanks, [@endorfin](https://github.com/endorfin)
13
+
14
+ ### Added
15
+ - Raise error on file not found (if configured)
16
+ [#93](https://github.com/jamesmartin/inline_svg/issues/93)
17
+
8
18
  ## [1.3.1] - 2017-12-14
9
19
  ### Fixed
10
20
  - Allow Ruby < 2.1 to work with `CachedAssetFile`
data/README.md CHANGED
@@ -294,6 +294,15 @@ Which would instead render:
294
294
  <svg class='svg-not-found'><!-- SVG file not found: 'some-missing-file.svg' --></svg>
295
295
  ```
296
296
 
297
+ Alternatively, `inline_svg` can be configured to raise an exception when a file
298
+ is not found:
299
+
300
+ ```ruby
301
+ InlineSvg.configure do |config|
302
+ config.raise_on_file_not_found = true
303
+ end
304
+ ```
305
+
297
306
  ## Contributing
298
307
 
299
308
  1. Fork it ( [http://github.com/jamesmartin/inline_svg/fork](http://github.com/jamesmartin/inline_svg/fork) )
data/circle.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  machine:
2
2
  ruby:
3
- version: 2.2.2
3
+ version: 2.5.0
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.5"
21
+ spec.add_development_dependency "bundler", "~> 2.0"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec", "~> 3.2"
24
24
  spec.add_development_dependency "rspec_junit_formatter", "0.2.2"
@@ -21,6 +21,7 @@ module InlineSvg
21
21
  @custom_transformations = {}
22
22
  @asset_file = InlineSvg::AssetFile
23
23
  @svg_not_found_css_class = nil
24
+ @raise_on_file_not_found = false
24
25
  end
25
26
 
26
27
  def asset_file=(custom_asset_file)
@@ -61,6 +62,14 @@ module InlineSvg
61
62
  @custom_transformations.merge!(Hash[ *[options.fetch(:attribute, :no_attribute), options] ])
62
63
  end
63
64
 
65
+ def raise_on_file_not_found=(value)
66
+ @raise_on_file_not_found = value
67
+ end
68
+
69
+ def raise_on_file_not_found?
70
+ !!@raise_on_file_not_found
71
+ end
72
+
64
73
  private
65
74
 
66
75
  def incompatible_transformation?(klass)
@@ -7,7 +7,8 @@ module InlineSvg
7
7
  def inline_svg(filename, transform_params={})
8
8
  begin
9
9
  svg_file = read_svg(filename)
10
- rescue InlineSvg::AssetFile::FileNotFound
10
+ rescue InlineSvg::AssetFile::FileNotFound => error
11
+ raise error if InlineSvg.configuration.raise_on_file_not_found?
11
12
  return placeholder(filename) unless transform_params[:fallback].present?
12
13
 
13
14
  if transform_params[:fallback].present?
@@ -1,3 +1,5 @@
1
+ require 'digest'
2
+
1
3
  module InlineSvg
2
4
  class IdGenerator
3
5
  class Randomness
@@ -9,7 +11,7 @@ module InlineSvg
9
11
 
10
12
  def self.generate(base, salt, randomness: Randomness)
11
13
  bytes = Digest::SHA1.digest("#{base}-#{salt}-#{randomness.call}")
12
- Digest.hexencode(bytes).to_i(16).to_s(36)
14
+ 'a' + Digest.hexencode(bytes).to_i(16).to_s(36)
13
15
  end
14
16
  end
15
17
  end
@@ -40,8 +40,11 @@ module InlineSvg::TransformPipeline::Transformations
40
40
  end
41
41
 
42
42
  def self.lookup(transform_params)
43
+ return [] unless transform_params.any? || custom_transformations.any?
44
+
45
+ transform_params_with_defaults = params_with_defaults(transform_params)
43
46
  all_transformations.map { |name, definition|
44
- value = params_with_defaults(transform_params)[name]
47
+ value = transform_params_with_defaults[name]
45
48
  definition.fetch(:transform, no_transform).create_with_value(value) if value
46
49
  }.compact
47
50
  end
@@ -1,3 +1,3 @@
1
1
  module InlineSvg
2
- VERSION = "1.3.1"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -20,6 +20,22 @@ describe InlineSvg::ActionView::Helpers do
20
20
  InlineSvg.reset_configuration!
21
21
  end
22
22
 
23
+ context "and configured to raise" do
24
+ it "raises an exception" do
25
+ InlineSvg.configure do |config|
26
+ config.raise_on_file_not_found = true
27
+ end
28
+
29
+ allow(InlineSvg::AssetFile).to receive(:named).
30
+ with('some-missing-file.svg').
31
+ and_raise(InlineSvg::AssetFile::FileNotFound.new)
32
+
33
+ expect {
34
+ helper.inline_svg('some-missing-file.svg')
35
+ }.to raise_error(InlineSvg::AssetFile::FileNotFound)
36
+ end
37
+ end
38
+
23
39
  it "returns an empty, html safe, SVG document as a placeholder" do
24
40
  allow(InlineSvg::AssetFile).to receive(:named).
25
41
  with('some-missing-file.svg').
@@ -5,6 +5,6 @@ describe InlineSvg::IdGenerator do
5
5
  randomizer = -> { "some-random-value" }
6
6
 
7
7
  expect(InlineSvg::IdGenerator.generate("some-base", "some-salt", randomness: randomizer)).
8
- to eq("t2c17mkqnvopy36iccxspura7wnreqf")
8
+ to eq("at2c17mkqnvopy36iccxspura7wnreqf")
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inline_svg
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-13 00:00:00.000000000 Z
11
+ date: 2019-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.5'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -132,6 +132,7 @@ files:
132
132
  - ".gitignore"
133
133
  - ".rubocop.yml"
134
134
  - ".rubocop_todo.yml"
135
+ - ".travis.yml"
135
136
  - CHANGELOG.md
136
137
  - Gemfile
137
138
  - LICENSE.txt
@@ -214,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
215
  version: '0'
215
216
  requirements: []
216
217
  rubyforge_project:
217
- rubygems_version: 2.6.11
218
+ rubygems_version: 2.7.6
218
219
  signing_key:
219
220
  specification_version: 4
220
221
  summary: Embeds an SVG document, inline.