inline_svg 0.7.0 → 0.8.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 +4 -4
- data/CHANGELOG.md +10 -3
- data/README.md +28 -0
- data/lib/inline_svg.rb +1 -4
- data/lib/inline_svg/transform_pipeline/transformations.rb +26 -13
- data/lib/inline_svg/version.rb +1 -1
- data/spec/helpers/inline_svg_spec.rb +32 -0
- data/spec/inline_svg_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9be73c7539f050fff8b70b78686af612b47bce30
|
4
|
+
data.tar.gz: 03a319e6d961e16550a4fb20f7427586a4374850
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d991a3f66c45f6b889f6533d093f3e20021ce97197adf61a174e653f6c26cebaa70013887650df56d9740e812eb460572d2c0656589db18cf4eccc6e5da11420
|
7
|
+
data.tar.gz: 4f99e93a2951dc4b3cb7424442aafa8858312076a3d45d39e60fd67116a2219829db8e3f57378172a8a563bb8774960ef6523a63e652146631528030cdd91cb1
|
data/CHANGELOG.md
CHANGED
@@ -3,7 +3,13 @@ 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
|
-
- Nothing
|
6
|
+
- Nothing
|
7
|
+
|
8
|
+
## [0.8.0] - 2016-05-23
|
9
|
+
### Added
|
10
|
+
- Default values for custom transformations
|
11
|
+
[#36](https://github.com/jamesmartin/inline_svg/issues/36). Thanks,
|
12
|
+
[@andrewaguiar](https://github.com/andrewaguiar)
|
7
13
|
|
8
14
|
## [0.7.0] - 2016-05-03
|
9
15
|
### Added
|
@@ -85,8 +91,9 @@ transformations](https://github.com/jamesmartin/inline_svg/blob/master/README.md
|
|
85
91
|
### Added
|
86
92
|
- Basic Railtie and view helper to inline SVG documents to Rails views.
|
87
93
|
|
88
|
-
[unreleased]: https://github.com/jamesmartin/inline_svg/compare/v0.
|
89
|
-
[0.
|
94
|
+
[unreleased]: https://github.com/jamesmartin/inline_svg/compare/v0.8.0...HEAD
|
95
|
+
[0.8.0]: https://github.com/jamesmartin/inline_svg/compare/v0.7.0...v0.8.0
|
96
|
+
[0.7.0]: https://github.com/jamesmartin/inline_svg/compare/v0.6.4...v0.7.0
|
90
97
|
[0.6.4]: https://github.com/jamesmartin/inline_svg/compare/v0.6.3...v0.6.4
|
91
98
|
[0.6.3]: https://github.com/jamesmartin/inline_svg/compare/v0.6.2...v0.6.3
|
92
99
|
[0.6.2]: https://github.com/jamesmartin/inline_svg/compare/v0.6.1...v0.6.2
|
data/README.md
CHANGED
@@ -131,6 +131,34 @@ In this example, the following transformation would be applied to a SVG document
|
|
131
131
|
<svg custom="some value">...</svg>
|
132
132
|
```
|
133
133
|
|
134
|
+
You can also provide a default_value to the custom transformation, so even if you don't pass a value it will be triggered
|
135
|
+
|
136
|
+
```ruby
|
137
|
+
# Note that the named `attribute` will be used to pass a value to your custom transform
|
138
|
+
InlineSvg.configure do |config|
|
139
|
+
config.add_custom_transformation(attribute: :my_custom_attribute, transform: MyCustomTransform, default_value: 'default value')
|
140
|
+
end
|
141
|
+
```
|
142
|
+
|
143
|
+
The custom transformation will be triggered even if you don't pass any attribute value
|
144
|
+
```haml
|
145
|
+
%div
|
146
|
+
= inline_svg "some-document.svg"
|
147
|
+
= inline_svg "some-document.svg", my_custom_attribute: 'some value'
|
148
|
+
```
|
149
|
+
|
150
|
+
In this example, the following transformation would be applied to a SVG document:
|
151
|
+
|
152
|
+
```xml
|
153
|
+
<svg custom="default value">...</svg>
|
154
|
+
```
|
155
|
+
|
156
|
+
And
|
157
|
+
|
158
|
+
```xml
|
159
|
+
<svg custom="some value">...</svg>
|
160
|
+
```
|
161
|
+
|
134
162
|
## Contributing
|
135
163
|
|
136
164
|
1. Fork it ( [http://github.com/jamesmartin/inline_svg/fork](http://github.com/jamesmartin/inline_svg/fork) )
|
data/lib/inline_svg.rb
CHANGED
@@ -36,7 +36,7 @@ module InlineSvg
|
|
36
36
|
if incompatible_transformation?(options.fetch(:transform))
|
37
37
|
raise InlineSvg::Configuration::Invalid.new("#{options.fetch(:transform)} should implement the .create_with_value and #transform methods")
|
38
38
|
end
|
39
|
-
@custom_transformations.merge!(Hash[ *[options.fetch(:attribute, :no_attribute), options
|
39
|
+
@custom_transformations.merge!(Hash[ *[options.fetch(:attribute, :no_attribute), options] ])
|
40
40
|
end
|
41
41
|
|
42
42
|
private
|
@@ -45,9 +45,6 @@ module InlineSvg
|
|
45
45
|
!klass.is_a?(Class) || !klass.respond_to?(:create_with_value) || !klass.instance_methods.include?(:transform)
|
46
46
|
end
|
47
47
|
|
48
|
-
def no_transform
|
49
|
-
InlineSvg::TransformPipeline::Transformations::NullTransformation
|
50
|
-
end
|
51
48
|
end
|
52
49
|
|
53
50
|
@configuration = InlineSvg::Configuration.new
|
@@ -1,17 +1,17 @@
|
|
1
1
|
module InlineSvg::TransformPipeline::Transformations
|
2
2
|
def self.built_in_transformations
|
3
3
|
{
|
4
|
-
nocomment: NoComment,
|
5
|
-
class: ClassAttribute,
|
6
|
-
title: Title,
|
7
|
-
desc: Description,
|
8
|
-
size: Size,
|
9
|
-
height: Height,
|
10
|
-
width: Width,
|
11
|
-
id: IdAttribute,
|
12
|
-
data: DataAttributes,
|
13
|
-
preserve_aspect_ratio: PreserveAspectRatio,
|
14
|
-
aria: AriaAttributes
|
4
|
+
nocomment: { transform: NoComment },
|
5
|
+
class: { transform: ClassAttribute },
|
6
|
+
title: { transform: Title },
|
7
|
+
desc: { transform: Description },
|
8
|
+
size: { transform: Size },
|
9
|
+
height: { transform: Height },
|
10
|
+
width: { transform: Width },
|
11
|
+
id: { transform: IdAttribute },
|
12
|
+
data: { transform: DataAttributes },
|
13
|
+
preserve_aspect_ratio: { transform: PreserveAspectRatio },
|
14
|
+
aria: { transform: AriaAttributes }
|
15
15
|
}
|
16
16
|
end
|
17
17
|
|
@@ -24,14 +24,27 @@ module InlineSvg::TransformPipeline::Transformations
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.lookup(transform_params)
|
27
|
-
without_empty_values(transform_params).map do |key, value|
|
28
|
-
all_transformations.fetch(key, NullTransformation)
|
27
|
+
all_default_values.merge(without_empty_values(transform_params)).map do |key, value|
|
28
|
+
options = all_transformations.fetch(key, { transform: NullTransformation })
|
29
|
+
options.fetch(:transform, no_transform).create_with_value(value)
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
32
33
|
def self.without_empty_values(params)
|
33
34
|
params.reject {|key, value| value.nil?}
|
34
35
|
end
|
36
|
+
|
37
|
+
def self.all_default_values
|
38
|
+
custom_transformations
|
39
|
+
.values
|
40
|
+
.select {|opt| opt[:default_value] != nil}
|
41
|
+
.map {|opt| [opt[:attribute], opt[:default_value]]}
|
42
|
+
.inject({}) {|hash, array| hash.merge!(array[0] => array[1])}
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.no_transform
|
46
|
+
InlineSvg::TransformPipeline::Transformations::NullTransformation
|
47
|
+
end
|
35
48
|
end
|
36
49
|
|
37
50
|
require 'inline_svg/transform_pipeline/transformations/transformation'
|
data/lib/inline_svg/version.rb
CHANGED
@@ -112,6 +112,38 @@ SVG
|
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
+
context "with custom transformations using a default value" do
|
116
|
+
before(:each) do
|
117
|
+
InlineSvg.configure do |config|
|
118
|
+
config.add_custom_transformation({attribute: :custom, transform: WorkingCustomTransform, default_value: 'default value'})
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
after(:each) do
|
123
|
+
InlineSvg.reset_configuration!
|
124
|
+
end
|
125
|
+
|
126
|
+
context "without passing the attribute value" do
|
127
|
+
it "applies custom transformations to the output using the default value" do
|
128
|
+
input_svg = '<svg></svg>'
|
129
|
+
|
130
|
+
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
131
|
+
|
132
|
+
expect(helper.inline_svg('some-file')).to eq "<svg custom=\"default value\"></svg>\n"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context "passing the attribute value" do
|
137
|
+
it "applies custom transformations to the output" do
|
138
|
+
input_svg = '<svg></svg>'
|
139
|
+
|
140
|
+
allow(InlineSvg::AssetFile).to receive(:named).with('some-file').and_return(input_svg)
|
141
|
+
|
142
|
+
expect(helper.inline_svg('some-file', custom: 'some value')).to eq "<svg custom=\"some value\"></svg>\n"
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
115
147
|
end
|
116
148
|
context 'argument polimorphizm' do
|
117
149
|
let(:argument) { double('argument') }
|
data/spec/inline_svg_spec.rb
CHANGED
@@ -48,7 +48,7 @@ describe InlineSvg do
|
|
48
48
|
config.add_custom_transformation(attribute: :my_transform, transform: MyCustomTransform)
|
49
49
|
end
|
50
50
|
|
51
|
-
expect(InlineSvg.configuration.custom_transformations).to eq({my_transform: MyCustomTransform})
|
51
|
+
expect(InlineSvg.configuration.custom_transformations).to eq({my_transform: {attribute: :my_transform, transform: MyCustomTransform}})
|
52
52
|
end
|
53
53
|
|
54
54
|
it "rejects transformations that do not implement .create_with_value" do
|
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: 0.
|
4
|
+
version: 0.8.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: 2016-05-
|
11
|
+
date: 2016-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|