inline_svg 1.9.0 → 1.10.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 +4 -4
- data/CHANGELOG.md +16 -2
- data/lib/inline_svg/transform_pipeline.rb +1 -1
- data/lib/inline_svg/version.rb +1 -1
- data/lib/inline_svg/webpack_asset_finder.rb +15 -6
- data/lib/inline_svg.rb +1 -0
- data/spec/helpers/inline_svg_spec.rb +28 -46
- data/spec/inline_svg_spec.rb +1 -1
- data/spec/webpack_asset_finder_spec.rb +10 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 66214539304b60e87e9263afb26531212492ca77957e9ce8cf89d015cef86239
|
4
|
+
data.tar.gz: 6ab9cb3d75a9f268728600edb48bf27b3503145c80f1addabe8bc484c88af545
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f8d4642dff97eb5bfc358fd1ce2257d5113a6f232c02f4ecd847007ee861b2537748539c689e5e2e67297951fdd158594740a754d49469cbd8c13c72002c290
|
7
|
+
data.tar.gz: 1b5cb2dfd5e7067d64ec0cc3449c2aeeead3a39cab42f8d51db33609a296478511fa9a24a965e32b10d7f01c98e5cb4b2ef8a6268fb055a7ad968068499eccd6
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
5
|
## [Unreleased][unreleased]
|
6
|
+
|
7
|
+
Nothing.
|
8
|
+
|
9
|
+
## [1.10.0] - 2024-09-03
|
10
|
+
### Added
|
11
|
+
- Support for Shakapacker. [#158](https://github.com/jamesmartin/inline_svg/pull/158). Thanks, [@tagliala](https://github.com/tagliala)
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
- Fixed documentation typos. [#157](https://github.com/jamesmartin/inline_svg/pull/157). Thanks, [@tagliala](https://github.com/tagliala)
|
15
|
+
- Fixed missing ActiveSupport require. [#152](https://github.com/jamesmartin/inline_svg/pull/152). Thanks, [@xymbol](https://github.com/xymbol)
|
16
|
+
- Remove wrapping whitespace from SVG tags. [#150](https://github.com/jamesmartin/inline_svg/pull/150). Thanks, [@fredboyle](https://github.com/fredboyle)
|
17
|
+
|
18
|
+
## [1.9.0] - 2023-03-29
|
6
19
|
### Added
|
7
20
|
- A new option: `view_box` adds a `viewBox` attribute to the SVG. [#142](https://github.com/jamesmartin/inline_svg/pull/142). Thanks [@sunny](https://github.com/sunny)
|
8
21
|
|
@@ -208,7 +221,7 @@ transformations](https://github.com/jamesmartin/inline_svg/blob/master/README.md
|
|
208
221
|
|
209
222
|
## [0.5.1] - 2015-03-30
|
210
223
|
### Warning
|
211
|
-
** This version is NOT
|
224
|
+
** This version is NOT compatible with Sprockets >= 3. **
|
212
225
|
|
213
226
|
### Fixed
|
214
227
|
- Support for ActiveSupport (and hence, Rails) 4.2.x. Thanks, @jmarceli.
|
@@ -249,7 +262,8 @@ transformations](https://github.com/jamesmartin/inline_svg/blob/master/README.md
|
|
249
262
|
### Added
|
250
263
|
- Basic Railtie and view helper to inline SVG documents to Rails views.
|
251
264
|
|
252
|
-
[unreleased]: https://github.com/jamesmartin/inline_svg/compare/v1.
|
265
|
+
[unreleased]: https://github.com/jamesmartin/inline_svg/compare/v1.9.0...HEAD
|
266
|
+
[1.9.0]: https://github.com/jamesmartin/inline_svg/compare/v1.8.0...v1.9.0
|
253
267
|
[1.8.0]: https://github.com/jamesmartin/inline_svg/compare/v1.7.2...v1.8.0
|
254
268
|
[1.7.2]: https://github.com/jamesmartin/inline_svg/compare/v1.7.1...v1.7.2
|
255
269
|
[1.7.1]: https://github.com/jamesmartin/inline_svg/compare/v1.7.0...v1.7.1
|
data/lib/inline_svg/version.rb
CHANGED
@@ -6,22 +6,31 @@ module InlineSvg
|
|
6
6
|
|
7
7
|
def initialize(filename)
|
8
8
|
@filename = filename
|
9
|
-
manifest_lookup =
|
9
|
+
manifest_lookup = asset_helper.manifest.lookup(@filename)
|
10
10
|
@asset_path = manifest_lookup.present? ? URI(manifest_lookup).path : ""
|
11
11
|
end
|
12
12
|
|
13
13
|
def pathname
|
14
14
|
return if @asset_path.blank?
|
15
15
|
|
16
|
-
if
|
16
|
+
if asset_helper.dev_server.running?
|
17
17
|
dev_server_asset(@asset_path)
|
18
|
-
elsif
|
19
|
-
File.join(
|
18
|
+
elsif asset_helper.config.public_path.present?
|
19
|
+
File.join(asset_helper.config.public_path, @asset_path)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
+
def asset_helper
|
26
|
+
@asset_helper ||=
|
27
|
+
if defined?(::Shakapacker)
|
28
|
+
::Shakapacker
|
29
|
+
else
|
30
|
+
::Webpacker
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
25
34
|
def dev_server_asset(file_path)
|
26
35
|
asset = fetch_from_dev_server(file_path)
|
27
36
|
|
@@ -38,8 +47,8 @@ module InlineSvg
|
|
38
47
|
end
|
39
48
|
|
40
49
|
def fetch_from_dev_server(file_path)
|
41
|
-
http = Net::HTTP.new(
|
42
|
-
http.use_ssl =
|
50
|
+
http = Net::HTTP.new(asset_helper.dev_server.host, asset_helper.dev_server.port)
|
51
|
+
http.use_ssl = asset_helper.dev_server.protocol == "https"
|
43
52
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
44
53
|
|
45
54
|
http.request(Net::HTTP::Get.new(file_path)).body
|
data/lib/inline_svg.rb
CHANGED
@@ -86,9 +86,7 @@ describe InlineSvg::ActionView::Helpers do
|
|
86
86
|
with('missing.svg').
|
87
87
|
and_raise(InlineSvg::AssetFile::FileNotFound.new)
|
88
88
|
|
89
|
-
fallback_file =
|
90
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"><!-- This is a comment --></svg>
|
91
|
-
SVG
|
89
|
+
fallback_file = '<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"><!-- This is a comment --></svg>'
|
92
90
|
allow(InlineSvg::AssetFile).to receive(:named).with('fallback.svg').and_return(fallback_file)
|
93
91
|
expect(helper.send(helper_method, 'missing.svg', fallback: 'fallback.svg')).to eq fallback_file
|
94
92
|
end
|
@@ -99,9 +97,7 @@ SVG
|
|
99
97
|
|
100
98
|
context "and no options" do
|
101
99
|
it "returns a html safe version of the file's contents" do
|
102
|
-
example_file =
|
103
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"><!-- This is a comment --></svg>
|
104
|
-
SVG
|
100
|
+
example_file = '<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"><!-- This is a comment --></svg>'
|
105
101
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(example_file)
|
106
102
|
expect(helper.send(helper_method, 'some-file')).to eq example_file
|
107
103
|
end
|
@@ -109,12 +105,8 @@ SVG
|
|
109
105
|
|
110
106
|
context "and the 'title' option" do
|
111
107
|
it "adds the title node to the SVG output" do
|
112
|
-
input_svg =
|
113
|
-
<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"></svg>
|
114
|
-
SVG
|
115
|
-
expected_output = <<-SVG
|
116
|
-
<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"><title>A title</title></svg>
|
117
|
-
SVG
|
108
|
+
input_svg = '<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"></svg>'
|
109
|
+
expected_output = '<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"><title>A title</title></svg>'
|
118
110
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
119
111
|
expect(helper.send(helper_method, 'some-file', title: 'A title')).to eq expected_output
|
120
112
|
end
|
@@ -122,12 +114,8 @@ SVG
|
|
122
114
|
|
123
115
|
context "and the 'desc' option" do
|
124
116
|
it "adds the description node to the SVG output" do
|
125
|
-
input_svg =
|
126
|
-
<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"></svg>
|
127
|
-
SVG
|
128
|
-
expected_output = <<-SVG
|
129
|
-
<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"><desc>A description</desc></svg>
|
130
|
-
SVG
|
117
|
+
input_svg = '<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"></svg>'
|
118
|
+
expected_output = '<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"><desc>A description</desc></svg>'
|
131
119
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
132
120
|
expect(helper.send(helper_method, 'some-file', desc: 'A description')).to eq expected_output
|
133
121
|
end
|
@@ -135,12 +123,8 @@ SVG
|
|
135
123
|
|
136
124
|
context "and the 'nocomment' option" do
|
137
125
|
it "strips comments and other unknown/unsafe nodes from the output" do
|
138
|
-
input_svg =
|
139
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"
|
140
|
-
SVG
|
141
|
-
expected_output = <<-SVG
|
142
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"></svg>
|
143
|
-
SVG
|
126
|
+
input_svg = '<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"><!-- This is a comment --></svg>'
|
127
|
+
expected_output = '<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"></svg>'
|
144
128
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
145
129
|
expect(helper.send(helper_method, 'some-file', nocomment: true)).to eq expected_output
|
146
130
|
end
|
@@ -148,12 +132,8 @@ SVG
|
|
148
132
|
|
149
133
|
context "and the 'aria_hidden' option" do
|
150
134
|
it "sets 'aria-hidden=true' in the output" do
|
151
|
-
input_svg =
|
152
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"></svg>
|
153
|
-
SVG
|
154
|
-
expected_output = <<-SVG
|
155
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en" aria-hidden="true"></svg>
|
156
|
-
SVG
|
135
|
+
input_svg = '<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"></svg>'
|
136
|
+
expected_output = '<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en" aria-hidden="true"></svg>'
|
157
137
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
158
138
|
expect(helper.send(helper_method, 'some-file', aria_hidden: true)).to eq expected_output
|
159
139
|
end
|
@@ -161,12 +141,8 @@ SVG
|
|
161
141
|
|
162
142
|
context "and all options" do
|
163
143
|
it "applies all expected transformations to the output" do
|
164
|
-
input_svg =
|
165
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"
|
166
|
-
SVG
|
167
|
-
expected_output = <<-SVG
|
168
|
-
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"><title>A title</title><desc>A description</desc></svg>
|
169
|
-
SVG
|
144
|
+
input_svg = '<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"><!-- This is a comment --></svg>'
|
145
|
+
expected_output = '<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en"><title>A title</title><desc>A description</desc></svg>'
|
170
146
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
171
147
|
expect(helper.send(helper_method, 'some-file', title: 'A title', desc: 'A description', nocomment: true)).to eq expected_output
|
172
148
|
end
|
@@ -184,12 +160,8 @@ SVG
|
|
184
160
|
end
|
185
161
|
|
186
162
|
it "applies custm transformations to the output" do
|
187
|
-
input_svg =
|
188
|
-
<svg></svg>
|
189
|
-
SVG
|
190
|
-
expected_output = <<-SVG
|
191
|
-
<svg custom="some value"></svg>
|
192
|
-
SVG
|
163
|
+
input_svg = '<svg></svg>'
|
164
|
+
expected_output = '<svg custom="some value"></svg>'
|
193
165
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
194
166
|
expect(helper.send(helper_method, 'some-file', custom: 'some value')).to eq expected_output
|
195
167
|
end
|
@@ -212,7 +184,7 @@ SVG
|
|
212
184
|
|
213
185
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
214
186
|
|
215
|
-
expect(helper.send(helper_method, 'some-file')).to eq "<svg custom=\"default value\"></svg
|
187
|
+
expect(helper.send(helper_method, 'some-file')).to eq "<svg custom=\"default value\"></svg>"
|
216
188
|
end
|
217
189
|
end
|
218
190
|
|
@@ -222,7 +194,7 @@ SVG
|
|
222
194
|
|
223
195
|
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
224
196
|
|
225
|
-
expect(helper.send(helper_method, 'some-file', custom: 'some value')).to eq "<svg custom=\"some value\"></svg
|
197
|
+
expect(helper.send(helper_method, 'some-file', custom: 'some value')).to eq "<svg custom=\"some value\"></svg>"
|
226
198
|
end
|
227
199
|
end
|
228
200
|
end
|
@@ -251,17 +223,27 @@ SVG
|
|
251
223
|
expect(InlineSvg::IOResource).to receive(:===).with(io_object).and_return(true)
|
252
224
|
expect(InlineSvg::IOResource).to receive(:read).with(io_object).and_return("<svg><!-- Test IO --></svg>")
|
253
225
|
output = helper.send(helper_method, io_object)
|
254
|
-
expect(output).to eq "<svg><!-- Test IO --></svg
|
226
|
+
expect(output).to eq "<svg><!-- Test IO --></svg>"
|
255
227
|
expect(output).to be_html_safe
|
256
228
|
end
|
257
229
|
|
258
230
|
it 'return valid svg for file' do
|
259
231
|
output = helper.send(helper_method, File.new(file_path))
|
260
|
-
expect(output).to eq "<svg xmlns=\"http://www.w3.org/2000/svg\" xml:lang=\"en\" role=\"presentation\"><!-- This is a test comment --></svg
|
232
|
+
expect(output).to eq "<svg xmlns=\"http://www.w3.org/2000/svg\" xml:lang=\"en\" role=\"presentation\"><!-- This is a test comment --></svg>"
|
261
233
|
expect(output).to be_html_safe
|
262
234
|
end
|
263
235
|
|
264
236
|
end
|
237
|
+
|
238
|
+
context 'default output' do
|
239
|
+
it "returns an SVG tag without any pre or post whitespace characters" do
|
240
|
+
input_svg = '<svg></svg>'
|
241
|
+
|
242
|
+
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
243
|
+
|
244
|
+
expect(helper.send(helper_method, 'some-file')).to eq "<svg></svg>"
|
245
|
+
end
|
246
|
+
end
|
265
247
|
end
|
266
248
|
|
267
249
|
describe '#inline_svg' do
|
data/spec/inline_svg_spec.rb
CHANGED
@@ -47,7 +47,7 @@ describe InlineSvg do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
context "configuring a custom asset file" do
|
50
|
-
it "falls back to the built-in asset file implementation by
|
50
|
+
it "falls back to the built-in asset file implementation by default" do
|
51
51
|
expect(InlineSvg.configuration.asset_file).to eq(InlineSvg::AssetFile)
|
52
52
|
end
|
53
53
|
|
@@ -10,4 +10,14 @@ describe InlineSvg::WebpackAssetFinder do
|
|
10
10
|
expect(described_class.find_asset('some-file').pathname).to be_nil
|
11
11
|
end
|
12
12
|
end
|
13
|
+
|
14
|
+
context "when Shakapacker is defined" do
|
15
|
+
it "uses the new spelling" do
|
16
|
+
stub_const('Rails', double('Rails').as_null_object)
|
17
|
+
stub_const('Shakapacker', double('Shakapacker').as_null_object)
|
18
|
+
expect(::Shakapacker.manifest).to receive(:lookup).with('some-file').and_return(nil)
|
19
|
+
|
20
|
+
expect(described_class.find_asset('some-file').pathname).to be_nil
|
21
|
+
end
|
22
|
+
end
|
13
23
|
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.
|
4
|
+
version: 1.10.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:
|
11
|
+
date: 2024-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -222,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
222
|
- !ruby/object:Gem::Version
|
223
223
|
version: '0'
|
224
224
|
requirements: []
|
225
|
-
rubygems_version: 3.
|
225
|
+
rubygems_version: 3.1.6
|
226
226
|
signing_key:
|
227
227
|
specification_version: 4
|
228
228
|
summary: Embeds an SVG document, inline.
|