esvg 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fea759497650db657fa20420de39480d432d1fe4
4
- data.tar.gz: f20b05434ce1e948d64106143b9e0a7f96a85eff
3
+ metadata.gz: 98d1c59b1af38ab4024912d8cf4f3494602f735e
4
+ data.tar.gz: 1aff4ce984beec1383a7db0ce903af66323985e2
5
5
  SHA512:
6
- metadata.gz: 9baf646388301fe9882c8a3a5e5f1e8f8747c364c8c49c6ec4478a5793469168b547db956aee56c58c13cf554849bfd67a33d994ff46ced58aba6a533592ca8a
7
- data.tar.gz: 3090a729733675bc6e1b7b33f8755c12110a0ed4f166d510ad430faab82217788bc9a54bbd1591531b064dd75504f810d36dfd78689c23b58af8ddb120147ad3
6
+ metadata.gz: 03545cceaeb29d22e2c2ff525d69aefd0e1e5b207189100d9fa7d3ff01dbd00acffd0b2edcb754c5e401f62fbecf6d09f9ee2eba09410ca2ee4ab880f10411d7
7
+ data.tar.gz: 784305c4893813395c187e37f55d0a5e9c0be379978b2b301aa12d5173227bdc42105c50b8587f1b7f73a884981d364ea6725393cab13dd7a5175cc32b3e90b7
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
  /tmp/
10
10
  /test/build
11
11
  /test/optimized
12
+ .DS_Store
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # Changelog
2
2
 
3
- ### 2.1.0 (2015-09-23)
3
+ ### 2.2.0 (2015-09-30)
4
+ - New: New javascript helpers make it easier to inject SVG icons into javascript templates.
5
+ - New: Javascript works with module.exports if you're building Javascripts with a module requiring system.
6
+
7
+ ### 2.1.1 (2015-09-29)
4
8
  - Minor: `Esvg.icons.svgs` will now return the hash of svgs.
5
9
 
6
10
  ### 2.1.0 (2015-09-28)
data/lib/esvg/svg.rb CHANGED
@@ -12,6 +12,7 @@ module Esvg
12
12
  namespace_before: true,
13
13
  font_size: '1em',
14
14
  output_path: Dir.pwd,
15
+ verbose: false,
15
16
  format: 'js'
16
17
  }
17
18
 
@@ -122,17 +123,20 @@ module Esvg
122
123
 
123
124
  classes = files.keys.map{|k| ".#{icon_name(k)}"}.join(', ')
124
125
  preamble = %Q{#{classes} {
125
- clip: auto;
126
126
  font-size: #{config[:font_size]};
127
- background-size: auto 1em;
127
+ clip: auto;
128
+ background-size: auto;
128
129
  background-repeat: no-repeat;
129
130
  background-position: center center;
130
131
  display: inline-block;
131
132
  overflow: hidden;
133
+ background-size: auto 1em;
132
134
  height: 1em;
133
135
  width: 1em;
134
- color: transparent;
136
+ color: inherit;
137
+ fill: currentColor;
135
138
  vertical-align: middle;
139
+ line-height: 1em;
136
140
  }}
137
141
  styles << preamble
138
142
 
@@ -175,6 +179,30 @@ module Esvg
175
179
  if (!document.querySelector('#esvg-symbols')) {
176
180
  document.querySelector('body').insertAdjacentHTML('afterbegin', '#{html.gsub(/\n/,'').gsub("'"){"\\'"}}')
177
181
  }
182
+ },
183
+ icon: function(name, classnames) {
184
+ var svgName = this.iconName(name)
185
+ var element = document.querySelector('#'+svgName)
186
+
187
+ if (element) {
188
+ return '<svg class="#{config[:base_class]} '+svgName+' '+(classnames || '')+'" '+this.dimensions(element)+'><use xlink:href="#'+svgName+'"/></svg>'
189
+ } else {
190
+ console.error('File not found: "'+name+'.svg" at #{File.join(config[:path],'')}')
191
+ }
192
+ },
193
+ iconName: function(name) {
194
+ var before = #{config[:namespace_before]}
195
+ if (before) {
196
+ return "#{config[:namespace]}-"+this.dasherize(name)
197
+ } else {
198
+ return name+"-#{config[:namespace]}"
199
+ }
200
+ },
201
+ dimensions: function(el) {
202
+ return 'viewBox="'+el.getAttribute('viewBox')+'" width="'+el.getAttribute('width')+'" height="'+el.getAttribute('height')+'"'
203
+ },
204
+ dasherize: function(input) {
205
+ return input.replace(/[\W,_]/g, '-').replace(/-{2,}/g, '-')
178
206
  }
179
207
  }
180
208
 
@@ -186,6 +214,9 @@ document.addEventListener("page:change", function(event) { esvg.embed() })
186
214
 
187
215
  // Handle standard DOM ready events
188
216
  document.addEventListener("DOMContentLoaded", function(event) { esvg.embed() })
217
+
218
+ // Work with module exports:
219
+ if(typeof(module) != 'undefined') { module.exports = esvg }
189
220
  }
190
221
  end
191
222
  end
@@ -223,8 +254,10 @@ document.addEventListener("DOMContentLoaded", function(event) { esvg.embed() })
223
254
 
224
255
  config.merge!(options)
225
256
 
226
- config[:path] = File.expand_path(config[:path])
227
- config[:output_path] = File.expand_path(config[:output_path])
257
+ if config[:verbose]
258
+ config[:path] = File.expand_path(config[:path])
259
+ config[:output_path] = File.expand_path(config[:output_path])
260
+ end
228
261
 
229
262
  config[:js_path] ||= File.join(config[:output_path], 'esvg.js')
230
263
  config[:css_path] ||= File.join(config[:output_path], 'esvg.css')
@@ -266,7 +299,7 @@ document.addEventListener("DOMContentLoaded", function(event) { esvg.embed() })
266
299
  end
267
300
 
268
301
  def dasherize(input)
269
- input.gsub(/\W/, '-').gsub(/-{2,}/, '-')
302
+ input.gsub(/[\W,_]/, '-').gsub(/-{2,}/, '-')
270
303
  end
271
304
 
272
305
  def find_files
data/lib/esvg/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Esvg
2
- VERSION = "2.1.1"
2
+ VERSION = "2.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: esvg
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-29 00:00:00.000000000 Z
11
+ date: 2015-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler