inline_svg 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.

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
2
  SHA1:
3
- metadata.gz: fee50facd0f1019648bd0f7ab4d716c26919c098
4
- data.tar.gz: 4987318412fe0646742ceaf185df7a33bf2f1835
3
+ metadata.gz: 6eda36369f830ee60216241e8152c2a92be18f4f
4
+ data.tar.gz: 4a2c84a1379d7341aa74623b132b5d36ee68ea90
5
5
  SHA512:
6
- metadata.gz: 440f34b97188f0e0733ecc60d31bd436b2b911a708339b759b4729469029a01755498c4ea105eead195867749751049b57b2b6aa064dbc6ded2d23df65f0d79f
7
- data.tar.gz: 316936a7b5e273da6ba81e38e6f1f70df6aca4ac73ec8c80fbd3a7658a0e6f13be4ec5e0308c899fbc6b1336a46e3409d5efec7851ceb4b7f0860bd12d172b48
6
+ metadata.gz: 7c9c902e2ae6574cab4ab8a3bf69edb5a69232c190112ae645f9a1f402edf5bcb434c2b149620af12290dd1bcdb285c259d815c3220a92f0b2b8c7e753a163a7
7
+ data.tar.gz: a593f1d06649736a8772efd8b38f51ce476be53b62f252dbe45a1ccf35e46a0266fd3d693bd0b8b45284218697cc84a779562c00a3b1355ba1fb6151f4183652
data/CHANGELOG.md CHANGED
@@ -5,6 +5,14 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
  ## [Unreleased][unreleased]
6
6
  Nothing.
7
7
 
8
+ ## [0.5.0] - 2015-03-29
9
+ ### Added
10
+ - A new option: `id` adds an id attribute to the SVG.
11
+ - A new option: `data` adds data attributes to the SVG.
12
+
13
+ ### Changed
14
+ - New options: `height` and `width` override `size` and can be set independently.
15
+
8
16
  ## [0.4.0] - 2015-03-22
9
17
  ### Added
10
18
  - A new option: `size` adds width and height attributes to an SVG. Thanks, @2metres.
@@ -33,7 +41,8 @@ Nothing.
33
41
  ### Added
34
42
  - Basic Railtie and view helper to inline SVG documents to Rails views.
35
43
 
36
- [unreleased]: https://github.com/jamesmartin/inline_svg/compare/v0.4.0...HEAD
44
+ [unreleased]: https://github.com/jamesmartin/inline_svg/compare/v0.5.0...HEAD
45
+ [0.5.0]: https://github.com/jamesmartin/inline_svg/compare/v0.4.0...v0.5.0
37
46
  [0.4.0]: https://github.com/jamesmartin/inline_svg/compare/v0.3.0...v0.4.0
38
47
  [0.3.0]: https://github.com/jamesmartin/inline_svg/compare/v0.2.0...v0.3.0
39
48
  [0.2.0]: https://github.com/jamesmartin/inline_svg/compare/v0.1.0...v0.2.0
data/README.md CHANGED
@@ -65,8 +65,12 @@ blue:
65
65
  ```
66
66
 
67
67
  ## Options
68
+ * `id`: set a ID attribute on the SVG
68
69
  * `class`: set a CSS class attribute on the SVG
70
+ * `data`: add data attributes to the SVG (supply as a hash)
69
71
  * `size`: set width and height attributes on the SVG
72
+ * Can also be set using `height` and/or `width` attributes, which take
73
+ precedence over `size`
70
74
  * Supplied as "{Width} * {Height}" or "{Number}", so "30px*45px" becomes `width="30px"`
71
75
  and `height="45px"`, and "50%" becomes `width="50%"` and `height="50%"`
72
76
  * `title`: add a \<title\> node inside the top level of the SVG document
@@ -77,8 +81,8 @@ blue:
77
81
  Example:
78
82
 
79
83
  ```
80
- inline_svg("some-document.svg", class: 'some-class', size: '30% * 20%', title: 'Some Title', desc:
81
- 'Some interesting description', nocomment: true)
84
+ inline_svg("some-document.svg", id: 'some-id', class: 'some-class', data: {some: "value"}, size: '30% * 20%', title: 'Some Title', desc:
85
+ 'Some description', nocomment: true)
82
86
  ```
83
87
 
84
88
  ## Contributing
@@ -0,0 +1,16 @@
1
+ module InlineSvg::TransformPipeline::Transformations
2
+ class DataAttributes < Transformation
3
+ def transform(doc)
4
+ doc = Nokogiri::XML::Document.parse(doc.to_html)
5
+ svg = doc.at_css 'svg'
6
+ with_valid_hash_from(self.value).each_pair do |name, data|
7
+ svg["data-#{name}"] = data
8
+ end
9
+ doc
10
+ end
11
+
12
+ def with_valid_hash_from(hash)
13
+ Hash.try_convert(hash) || {}
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,10 @@
1
+ module InlineSvg::TransformPipeline::Transformations
2
+ class Height < Transformation
3
+ def transform(doc)
4
+ doc = Nokogiri::XML::Document.parse(doc.to_html)
5
+ svg = doc.at_css 'svg'
6
+ svg['height'] = self.value
7
+ doc
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module InlineSvg::TransformPipeline::Transformations
2
+ class IdAttribute < Transformation
3
+ def transform(doc)
4
+ doc = Nokogiri::XML::Document.parse(doc.to_html)
5
+ svg = doc.at_css 'svg'
6
+ svg['id'] = self.value
7
+ doc
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module InlineSvg::TransformPipeline::Transformations
2
+ class Width < Transformation
3
+ def transform(doc)
4
+ doc = Nokogiri::XML::Document.parse(doc.to_html)
5
+ svg = doc.at_css 'svg'
6
+ svg['width'] = self.value
7
+ doc
8
+ end
9
+ end
10
+ end
@@ -1,6 +1,16 @@
1
1
  module InlineSvg::TransformPipeline::Transformations
2
2
  def self.all_transformations
3
- {nocomment: NoComment, class: ClassAttribute, title: Title, desc: Description, size: Size}
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
+ }
4
14
  end
5
15
 
6
16
  def self.lookup(transform_params)
@@ -20,3 +30,7 @@ require 'inline_svg/transform_pipeline/transformations/class_attribute'
20
30
  require 'inline_svg/transform_pipeline/transformations/title'
21
31
  require 'inline_svg/transform_pipeline/transformations/description'
22
32
  require 'inline_svg/transform_pipeline/transformations/size'
33
+ require 'inline_svg/transform_pipeline/transformations/height'
34
+ require 'inline_svg/transform_pipeline/transformations/width'
35
+ require 'inline_svg/transform_pipeline/transformations/id_attribute'
36
+ require 'inline_svg/transform_pipeline/transformations/data_attributes'
@@ -1,3 +1,3 @@
1
1
  module InlineSvg
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -0,0 +1,36 @@
1
+ require 'inline_svg/transform_pipeline'
2
+
3
+ describe InlineSvg::TransformPipeline::Transformations::DataAttributes do
4
+ it "adds a data attribute to a SVG document" do
5
+ document = Nokogiri::XML::Document.parse('<svg>Some document</svg>')
6
+ transformation = InlineSvg::TransformPipeline::Transformations::DataAttributes.create_with_value({some: "value"})
7
+
8
+ expect(transformation.transform(document).to_html).to eq(
9
+ "<svg data-some=\"value\">Some document</svg>\n"
10
+ )
11
+ end
12
+
13
+ context "when multiple data attributes are supplied" do
14
+ it "adds data attributes to the SVG for each supplied value" do
15
+ document = Nokogiri::XML::Document.parse('<svg>Some document</svg>')
16
+ transformation = InlineSvg::TransformPipeline::Transformations::DataAttributes.
17
+ create_with_value({some: "value", other: "thing"})
18
+
19
+ expect(transformation.transform(document).to_html).to eq(
20
+ "<svg data-some=\"value\" data-other=\"thing\">Some document</svg>\n"
21
+ )
22
+ end
23
+ end
24
+
25
+ context "when a non-hash is supplied" do
26
+ it "does not update the SVG document" do
27
+ document = Nokogiri::XML::Document.parse('<svg>Some document</svg>')
28
+ transformation = InlineSvg::TransformPipeline::Transformations::DataAttributes.
29
+ create_with_value("some non-hash")
30
+
31
+ expect(transformation.transform(document).to_html).to eq(
32
+ "<svg>Some document</svg>\n"
33
+ )
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,12 @@
1
+ require 'inline_svg/transform_pipeline'
2
+
3
+ describe InlineSvg::TransformPipeline::Transformations::Height do
4
+ it "adds height attribute to a SVG document" do
5
+ document = Nokogiri::XML::Document.parse('<svg>Some document</svg>')
6
+ transformation = InlineSvg::TransformPipeline::Transformations::Height.create_with_value("5%")
7
+
8
+ expect(transformation.transform(document).to_html).to eq(
9
+ "<svg height=\"5%\">Some document</svg>\n"
10
+ )
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'inline_svg/transform_pipeline'
2
+
3
+ describe InlineSvg::TransformPipeline::Transformations::IdAttribute do
4
+ it "adds an id attribute to a SVG document" do
5
+ document = Nokogiri::XML::Document.parse('<svg>Some document</svg>')
6
+ transformation = InlineSvg::TransformPipeline::Transformations::IdAttribute.create_with_value("some-id")
7
+
8
+ expect(transformation.transform(document).to_html).to eq(
9
+ "<svg id=\"some-id\">Some document</svg>\n"
10
+ )
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'inline_svg/transform_pipeline'
2
+
3
+ describe InlineSvg::TransformPipeline::Transformations::Width do
4
+ it "adds width attribute to a SVG document" do
5
+ document = Nokogiri::XML::Document.parse('<svg>Some document</svg>')
6
+ transformation = InlineSvg::TransformPipeline::Transformations::Width.create_with_value("5%")
7
+
8
+ expect(transformation.transform(document).to_html).to eq(
9
+ "<svg width=\"5%\">Some document</svg>\n"
10
+ )
11
+ end
12
+ end
@@ -8,7 +8,11 @@ describe InlineSvg::TransformPipeline::Transformations do
8
8
  class: 'irrelevant',
9
9
  title: 'irrelevant',
10
10
  desc: 'irrelevant',
11
- size: 'irrelevant'
11
+ size: 'irrelevant',
12
+ height: 'irrelevant',
13
+ width: 'irrelevant',
14
+ id: 'irrelevant',
15
+ data: 'irrelevant'
12
16
  )
13
17
 
14
18
  expect(transformations.map(&:class)).to match_array([
@@ -16,7 +20,11 @@ describe InlineSvg::TransformPipeline::Transformations do
16
20
  InlineSvg::TransformPipeline::Transformations::ClassAttribute,
17
21
  InlineSvg::TransformPipeline::Transformations::Title,
18
22
  InlineSvg::TransformPipeline::Transformations::Description,
19
- InlineSvg::TransformPipeline::Transformations::Size
23
+ InlineSvg::TransformPipeline::Transformations::Size,
24
+ InlineSvg::TransformPipeline::Transformations::Height,
25
+ InlineSvg::TransformPipeline::Transformations::Width,
26
+ InlineSvg::TransformPipeline::Transformations::IdAttribute,
27
+ InlineSvg::TransformPipeline::Transformations::DataAttributes
20
28
  ])
21
29
  end
22
30
 
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.0
4
+ version: 0.5.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: 2015-03-22 00:00:00.000000000 Z
11
+ date: 2015-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -116,18 +116,26 @@ files:
116
116
  - lib/inline_svg/transform_pipeline.rb
117
117
  - lib/inline_svg/transform_pipeline/transformations.rb
118
118
  - lib/inline_svg/transform_pipeline/transformations/class_attribute.rb
119
+ - lib/inline_svg/transform_pipeline/transformations/data_attributes.rb
119
120
  - lib/inline_svg/transform_pipeline/transformations/description.rb
121
+ - lib/inline_svg/transform_pipeline/transformations/height.rb
122
+ - lib/inline_svg/transform_pipeline/transformations/id_attribute.rb
120
123
  - lib/inline_svg/transform_pipeline/transformations/no_comment.rb
121
124
  - lib/inline_svg/transform_pipeline/transformations/size.rb
122
125
  - lib/inline_svg/transform_pipeline/transformations/title.rb
123
126
  - lib/inline_svg/transform_pipeline/transformations/transformation.rb
127
+ - lib/inline_svg/transform_pipeline/transformations/width.rb
124
128
  - lib/inline_svg/version.rb
125
129
  - spec/asset_file_spec.rb
126
130
  - spec/files/example.svg
127
131
  - spec/finds_asset_paths_spec.rb
128
132
  - spec/helpers/inline_svg_spec.rb
129
133
  - spec/inline_svg_spec.rb
134
+ - spec/transformation_pipeline/transformations/data_attributes_spec.rb
135
+ - spec/transformation_pipeline/transformations/height_spec.rb
136
+ - spec/transformation_pipeline/transformations/id_attribute_spec.rb
130
137
  - spec/transformation_pipeline/transformations/size_spec.rb
138
+ - spec/transformation_pipeline/transformations/width_spec.rb
131
139
  - spec/transformation_pipeline/transformations_spec.rb
132
140
  homepage: ''
133
141
  licenses:
@@ -159,5 +167,9 @@ test_files:
159
167
  - spec/finds_asset_paths_spec.rb
160
168
  - spec/helpers/inline_svg_spec.rb
161
169
  - spec/inline_svg_spec.rb
170
+ - spec/transformation_pipeline/transformations/data_attributes_spec.rb
171
+ - spec/transformation_pipeline/transformations/height_spec.rb
172
+ - spec/transformation_pipeline/transformations/id_attribute_spec.rb
162
173
  - spec/transformation_pipeline/transformations/size_spec.rb
174
+ - spec/transformation_pipeline/transformations/width_spec.rb
163
175
  - spec/transformation_pipeline/transformations_spec.rb