inline_svg 0.0.1 → 0.1.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/README.md +52 -4
- data/inline_svg.gemspec +3 -1
- data/lib/inline_svg/action_view/helpers.rb +14 -3
- data/lib/inline_svg/version.rb +1 -1
- data/spec/files/example.svg +3 -0
- data/spec/helpers/inline_svg_spec.rb +53 -0
- metadata +44 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41039ec47d5e43fa34eaf787648e970efbf07c01
|
4
|
+
data.tar.gz: 026d0ba494b8d333dee2c4fa1d73e1544c40a972
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 361e754da8e05922c1575bee23500fc40d12675f06a925e35f64db3d9ce3716e2e2719509a710b1f0b3dbbeff2a7c3f8dbd1a4675eda5f72a2848b7aa2ede62b
|
7
|
+
data.tar.gz: ed37e6ad6598811999e617f6919e759c2eb455d3e91be2e07bcb578c44d8a27a1a104b0087be35b2f57c0f83b022b8698fbfe2f93d06e93b2ddb99692a55b085
|
data/README.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
-
#
|
1
|
+
# Inline Svg
|
2
2
|
|
3
|
-
|
3
|
+
Styling a SVG document with CSS for use on the web is most reliably achieved by
|
4
|
+
[adding classes to the document and
|
5
|
+
embedding](http://css-tricks.com/using-svg/) it inline in the HTML.
|
6
|
+
|
7
|
+
This gem is a little helper method (`inline_svg`) that reads an SVG document from a Rails
|
8
|
+
image directory, applies a CSS class attribute to the root of the document and
|
9
|
+
then embeds it into a view.
|
4
10
|
|
5
11
|
## Installation
|
6
12
|
|
@@ -18,11 +24,53 @@ Or install it yourself as:
|
|
18
24
|
|
19
25
|
## Usage
|
20
26
|
|
21
|
-
|
27
|
+
```
|
28
|
+
inline_svg(file_name, options={})
|
29
|
+
```
|
30
|
+
|
31
|
+
Currently, this little helper only works in the context of a Rails app. Here's
|
32
|
+
an example of embedding an SVG document and applying a 'class' attribute in
|
33
|
+
HAML:
|
34
|
+
|
35
|
+
```
|
36
|
+
!!! 5
|
37
|
+
%html
|
38
|
+
%head
|
39
|
+
%title Embedded SVG Documents
|
40
|
+
%body
|
41
|
+
%h1 Embedded SVG Documents
|
42
|
+
%div
|
43
|
+
= inline_svg "some-document.svg", class: 'some-class'
|
44
|
+
```
|
45
|
+
|
46
|
+
Here's some CSS to target the SVG, resize it and turn it an attractive shade of
|
47
|
+
blue:
|
48
|
+
|
49
|
+
```
|
50
|
+
.some-class {
|
51
|
+
display: block;
|
52
|
+
margin: 0 auto;
|
53
|
+
fill: #3498db;
|
54
|
+
width: 5em;
|
55
|
+
height: 5em;
|
56
|
+
}
|
57
|
+
```
|
58
|
+
|
59
|
+
## Options
|
60
|
+
* `class`: set a CSS class attribute on the SVG
|
61
|
+
* `title`: add a \<title\> node inside the top level of the SVG document
|
62
|
+
* `desc`: add a \<desc\> node inside the top level of the SVG document
|
63
|
+
|
64
|
+
Example:
|
65
|
+
|
66
|
+
```
|
67
|
+
inline_svg("some-document.svg", class: 'some-class', title: 'Some Title', desc:
|
68
|
+
'Some interesting description')
|
69
|
+
```
|
22
70
|
|
23
71
|
## Contributing
|
24
72
|
|
25
|
-
1. Fork it ( http://github.com/<my-github-username>/inline_svg/fork )
|
73
|
+
1. Fork it ( [http://github.com/<my-github-username>/inline_svg/fork](http://github.com/<my-github-username>/inline_svg/fork) )
|
26
74
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
75
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
76
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/inline_svg.gemspec
CHANGED
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.5"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec", "~> 2.6"
|
24
|
+
spec.add_development_dependency "activesupport"
|
23
25
|
|
24
|
-
spec.add_runtime_dependency "nokogiri", "~> 1.6"
|
26
|
+
spec.add_runtime_dependency "nokogiri", "~> 1.6", '~> 1.6'
|
25
27
|
end
|
@@ -1,5 +1,6 @@
|
|
1
|
-
require 'action_view/helpers'
|
2
|
-
require 'action_view/context'
|
1
|
+
require 'action_view/helpers' if defined?(Rails)
|
2
|
+
require 'action_view/context' if defined?(Rails)
|
3
|
+
require 'nokogiri'
|
3
4
|
|
4
5
|
module InlineSvg
|
5
6
|
module ActionView
|
@@ -8,9 +9,19 @@ module InlineSvg
|
|
8
9
|
file = File.read(Rails.root.join('app', 'assets', 'images', filename))
|
9
10
|
doc = Nokogiri::HTML::DocumentFragment.parse file
|
10
11
|
svg = doc.at_css 'svg'
|
11
|
-
if options[:class]
|
12
|
+
if options[:class]
|
12
13
|
svg['class'] = options[:class]
|
13
14
|
end
|
15
|
+
if options[:title].present?
|
16
|
+
title = Nokogiri::XML::Node.new("title", doc)
|
17
|
+
title.content = options[:title]
|
18
|
+
svg.add_child title
|
19
|
+
end
|
20
|
+
if options[:desc].present?
|
21
|
+
desc = Nokogiri::XML::Node.new("desc", doc)
|
22
|
+
desc.content = options[:desc]
|
23
|
+
svg.add_child desc
|
24
|
+
end
|
14
25
|
doc.to_html.html_safe
|
15
26
|
end
|
16
27
|
end
|
data/lib/inline_svg/version.rb
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'inline_svg'
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'active_support/core_ext'
|
4
|
+
|
5
|
+
describe InlineSvg::ActionView::Helpers do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
# Mock Rails
|
9
|
+
unless defined?(::Rails)
|
10
|
+
@mocked_rails_class = true
|
11
|
+
class ::Rails
|
12
|
+
end
|
13
|
+
end
|
14
|
+
# Allow mock Rails to give a path to our SVG
|
15
|
+
path_mocker = double("path_mocker")
|
16
|
+
allow(path_mocker).to receive(:join) { 'spec/files/example.svg' }
|
17
|
+
allow(Rails).to receive(:root) { path_mocker }
|
18
|
+
end
|
19
|
+
|
20
|
+
let(:mock_helper) { ( Class.new { include InlineSvg::ActionView::Helpers } ).new }
|
21
|
+
|
22
|
+
describe "#inline_svg" do
|
23
|
+
|
24
|
+
context 'when passed a SVG file' do
|
25
|
+
|
26
|
+
subject { mock_helper.inline_svg( 'mocked_path' ) }
|
27
|
+
let(:example_svg) {
|
28
|
+
<<-SVG.sub(/\n$/, '')
|
29
|
+
<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"></svg>
|
30
|
+
SVG
|
31
|
+
}
|
32
|
+
|
33
|
+
it { is_expected.to eql example_svg }
|
34
|
+
|
35
|
+
context 'and additional options' do
|
36
|
+
|
37
|
+
subject { mock_helper.inline_svg( 'mocked_path', title: 'A title', desc: 'A desc' ) }
|
38
|
+
let(:example_svg) {
|
39
|
+
<<-SVG.sub(/\n$/, '')
|
40
|
+
<svg xmlns="http://www.w3.org/2000/svg" role="presentation" xml:lang="en"><title>A title</title>
|
41
|
+
<desc>A desc</desc></svg>
|
42
|
+
SVG
|
43
|
+
}
|
44
|
+
|
45
|
+
it { is_expected.to eql example_svg }
|
46
|
+
|
47
|
+
end # 'and additional options'
|
48
|
+
|
49
|
+
end # 'when passed a SVG file'
|
50
|
+
|
51
|
+
end #inline_svg
|
52
|
+
|
53
|
+
end # describe InlineSvg::ActionView::Helpers
|
metadata
CHANGED
@@ -1,55 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inline_svg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.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: 2014-
|
11
|
+
date: 2014-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.5'
|
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
26
|
version: '1.5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activesupport
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
39
67
|
- !ruby/object:Gem::Version
|
40
68
|
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: nokogiri
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
|
-
- - ~>
|
73
|
+
- - "~>"
|
46
74
|
- !ruby/object:Gem::Version
|
47
75
|
version: '1.6'
|
48
76
|
type: :runtime
|
49
77
|
prerelease: false
|
50
78
|
version_requirements: !ruby/object:Gem::Requirement
|
51
79
|
requirements:
|
52
|
-
- - ~>
|
80
|
+
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: '1.6'
|
55
83
|
description: Get an SVG into your view and then style it with CSS.
|
@@ -59,7 +87,7 @@ executables: []
|
|
59
87
|
extensions: []
|
60
88
|
extra_rdoc_files: []
|
61
89
|
files:
|
62
|
-
- .gitignore
|
90
|
+
- ".gitignore"
|
63
91
|
- Gemfile
|
64
92
|
- LICENSE.txt
|
65
93
|
- README.md
|
@@ -69,6 +97,8 @@ files:
|
|
69
97
|
- lib/inline_svg/action_view/helpers.rb
|
70
98
|
- lib/inline_svg/railtie.rb
|
71
99
|
- lib/inline_svg/version.rb
|
100
|
+
- spec/files/example.svg
|
101
|
+
- spec/helpers/inline_svg_spec.rb
|
72
102
|
homepage: ''
|
73
103
|
licenses:
|
74
104
|
- MIT
|
@@ -79,12 +109,12 @@ require_paths:
|
|
79
109
|
- lib
|
80
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
81
111
|
requirements:
|
82
|
-
- -
|
112
|
+
- - ">="
|
83
113
|
- !ruby/object:Gem::Version
|
84
114
|
version: '0'
|
85
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
116
|
requirements:
|
87
|
-
- -
|
117
|
+
- - ">="
|
88
118
|
- !ruby/object:Gem::Version
|
89
119
|
version: '0'
|
90
120
|
requirements: []
|
@@ -93,4 +123,6 @@ rubygems_version: 2.2.2
|
|
93
123
|
signing_key:
|
94
124
|
specification_version: 4
|
95
125
|
summary: Embeds an SVG document, inline.
|
96
|
-
test_files:
|
126
|
+
test_files:
|
127
|
+
- spec/files/example.svg
|
128
|
+
- spec/helpers/inline_svg_spec.rb
|