svgo 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e49fc2f86948eb7fb9cb1b9da3aaa0e18c387dc
4
- data.tar.gz: e6d9453d70e2b4ec53d7daeb4eddbd59c22e59fc
3
+ metadata.gz: 10dfbd259d4a4a204ee6a9635cbc6edf3a200b8a
4
+ data.tar.gz: 314b094be9673d0bd72afed713004c235d003dcf
5
5
  SHA512:
6
- metadata.gz: 4573da2ad6b06bff2f81efccee3ac254cc1df2e7d4d9e0b176d4d80d0aff248e3b80a37a009cc5cdb61f4afe9a25f150ce346cb405694cd2f11cff8591db31d5
7
- data.tar.gz: d8571a5dd26504086e501aa88b6ca21f8590e41d2952904c5e43987832bbd6c6ac9e52dad0aabef1519fd1e0e7490b00c7d25119d61ff38489a4e249c9d38d21
6
+ metadata.gz: e8ceccb4be1b9960125d8e12b92af6d3295ff591701e3d94995d99ca7b69f71f8f4adcbe5b6b636078fc1daf825a52d6bf88b2c3e541b1380b3ef4bc73070dfc
7
+ data.tar.gz: 3d4098f895e94a52d86b9ad00e961a85c7877386e97e6b0ef6fbdf95ea755e974617fa97abdde08d8c7e2d56d506cd550a40e549b3af9c520482306db3fdd25e
data/README.MD CHANGED
@@ -1,8 +1,31 @@
1
1
  # A Ruby wrapper for Node SVGO
2
2
 
3
3
  Removes metadata and editor data elements and attributes that are redundant
4
- from SVG files. Can strip files so they are optimised for web use. Go to [SVGO]
5
- (https://github.com/svg/svgo) for more documentation on features.
4
+ from SVG files. Can strip files so they are optimised for web use. Go to
5
+ [SVGO](https://github.com/svg/svgo) for more documentation on features.
6
+
7
+ ## How this works
8
+
9
+ [`execjs`](https://github.com/rails/execjs) is used to run the Node SVGO as a
10
+ library. The SVGO library returns a JavaScript Promise, which is currently not
11
+ supported by `execjs` and probably never will be. `setTimeout` and sleep-like
12
+ functions are also disabled in `execjs` so we can't wait for the Promise to get
13
+ fulfilled. Therefore there is a small wrapper JavaScript in this repository
14
+ that calls all the components that SVGO is made up of, but without the
15
+ `Promise`. It also wraps up the configuration of plugins the way it is expected
16
+ by SVGO's components. Lastly `require` is not supported by `execjs` so all of
17
+ this is transpiled to one monolithic JavaScript file - that is completely
18
+ self-contained, using [browserify](http://browserify.org/).
19
+
20
+ __NOTE:__ `execjs` supports a variety of JavaSript runtimes, notably
21
+ [`therubyracer`](https://github.com/cowboyd/therubyracer), but `therubyracer`
22
+ depends on an ancient [`libv8`](https://github.com/cowboyd/libv8), which
23
+ doesn't support some of the modern syntax used in SVGO. Therefore `mini_racer`
24
+ (a drop in replacement for `therubyracer`) is a dependency, which uses a much
25
+ more recent `libv8`.
26
+
27
+ If you have [Node](https://nodejs.org/) installed you could also use that as a
28
+ runtime.
6
29
 
7
30
  ## How to use?
8
31
 
@@ -29,8 +52,8 @@ svgo.optimize(File.read(svg_file))
29
52
 
30
53
  #### Method 2
31
54
 
32
- You can manually pass options to the class that correspond to [SVGO]
33
- (https://github.com/svg/svgo)'s documentation.
55
+ You can manually pass options to the class that correspond to
56
+ [SVGO](https://github.com/svg/svgo)'s documentation.
34
57
 
35
58
  ```ruby
36
59
  require('svgo')
@@ -100,3 +123,7 @@ docker run -i svgo < test/fixtures/ruby.svg > test/fixtures/ruby.optim.svg
100
123
  -rw-r--r-- 1 user staff 9.5K Nov 5 22:16 ruby.optim.svg
101
124
  -rw-r--r-- 1 user staff 23K Nov 5 22:12 ruby.svg
102
125
  ```
126
+
127
+ ## Building Node SVGO from source
128
+
129
+ Because `execjs`
data/bin/svgo-ruby CHANGED
@@ -202,23 +202,19 @@ else
202
202
  puts parser.banner
203
203
  exit 2
204
204
  else
205
- result = svgo.optimize_file(input_file)
205
+ begin
206
+ data_out = svgo.optimize_file(input_file)
207
+ rescue => err
208
+ puts err.message
209
+ exit(1)
210
+ end
206
211
  end
207
212
  end
208
213
 
209
- if result['errors'].length > 0
210
- if result['errors'].length > 1
211
- puts %Q(Errors occurred: \n - #{result['errors'].join("\n - s")})
212
- else
213
- puts "An error occurred: #{result['errors'][0]}"
214
- end
215
- exit(1)
216
- end
217
-
218
214
  unless output_file
219
215
  puts result['data']
220
216
  else
221
- File.new(output_file, 'w').write(result['data'])
217
+ File.new(output_file, 'w').write(data_out)
222
218
  end
223
219
 
224
220
 
data/lib/svgo.rb CHANGED
@@ -68,37 +68,45 @@ class SvgoOptions
68
68
  @options.js2svg
69
69
  end
70
70
 
71
- def js2svg=(arg)
72
- @options.js2svg = arg
71
+ def js2svg=(js2svg)
72
+ @options.js2svg = js2svg
73
73
  end
74
74
 
75
75
  def plugins
76
76
  @options.plugins
77
77
  end
78
78
 
79
- def plugins=(arg)
80
- @options.plugins = arg
79
+ def plugins=(plugins)
80
+ @options.plugins = plugins
81
81
  end
82
82
 
83
83
  def floatPrecision
84
84
  @options.floatPrecision
85
85
  end
86
86
 
87
- def floatPrecision=(arg)
88
- @options.floatPrecision = arg
87
+ def floatPrecision=(floatPrecision)
88
+ @options.floatPrecision = floatPrecision
89
89
  end
90
90
 
91
91
  def multipass
92
92
  @options.multipass
93
93
  end
94
94
 
95
- def multipass=(arg)
96
- @options.multipass = arg
95
+ def multipass=(multipass)
96
+ @options.multipass = multipass
97
97
  end
98
98
 
99
99
  def [](key)
100
100
  @options[key.to_sym]
101
101
  end
102
+
103
+ def runtime
104
+ @options.runtime
105
+ end
106
+
107
+ def runtime=(runtime)
108
+ @options.runtime = runtime
109
+ end
102
110
  end
103
111
 
104
112
  class SvgOptimizer
@@ -109,6 +117,26 @@ class SvgOptimizer
109
117
  else
110
118
  @options = options
111
119
  end
120
+
121
+ runtime = @options.delete "runtime"
122
+ unless runtime
123
+ # therubyracer is a first choice for execjs but its libv8 is too
124
+ # old for the svgo library and its dependencies.
125
+ runtimes = [
126
+ # MacOS only system component
127
+ ExecJS::Runtimes::JavaScriptCore,
128
+ ExecJS::Runtimes::MiniRacer,
129
+ ExecJS::Runtimes::Node
130
+ ]
131
+ runtime = runtimes.select {|r| r.available?}.first
132
+ unless runtime
133
+ raise ExecJS::RuntimeUnavailable.new(
134
+ "No supported runtime available please install " \
135
+ "`mini_racer` or `NodeJS`."
136
+ )
137
+ end
138
+ end
139
+ ExecJS.runtime = runtime
112
140
  if not @options[:plugins]
113
141
  @options[:plugins] = PLUGINS_DEFAULT
114
142
  end
@@ -121,7 +149,15 @@ class SvgOptimizer
121
149
  end
122
150
 
123
151
  def optimize(svg_data)
124
- @context.call("svgo", @options.to_json, svg_data.to_s);
152
+ result = @context.call("svgo", @options.to_json, svg_data.to_s);
153
+ if result['errors'].length > 0
154
+ if result['errors'].length > 1
155
+ err = %Q(Errors occurred: \n - #{result['errors'].join("\n - s")})
156
+ else
157
+ err = "An error occurred: #{result['errors'][0]}"
158
+ end
159
+ raise StandardError.new(err)
160
+ end
125
161
  end
126
162
 
127
163
  def optimize_file(svg_file)
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SvgoVersion
2
- VERSION = '0.1.1'
3
- end
2
+ VERSION = '0.1.2'
3
+ end
@@ -3248,7 +3248,7 @@ module.exports = {
3248
3248
  pseudos: pseudos
3249
3249
  };
3250
3250
 
3251
- },{"./attributes.js":9,"boolbase":2,"nth-check":347}],14:[function(require,module,exports){
3251
+ },{"./attributes.js":9,"boolbase":2,"nth-check":346}],14:[function(require,module,exports){
3252
3252
  module.exports = sortByProcedure;
3253
3253
 
3254
3254
  /*
@@ -18849,7 +18849,7 @@ defineProperties.supportsDescriptors = !!supportsDescriptors;
18849
18849
 
18850
18850
  module.exports = defineProperties;
18851
18851
 
18852
- },{"object-keys":349}],269:[function(require,module,exports){
18852
+ },{"object-keys":348}],269:[function(require,module,exports){
18853
18853
  /*
18854
18854
  Module dependencies
18855
18855
  */
@@ -22001,13 +22001,6 @@ if (hasSymbols) {
22001
22001
  }
22002
22002
 
22003
22003
  },{"has-symbols":305}],315:[function(require,module,exports){
22004
- var toString = {}.toString;
22005
-
22006
- module.exports = Array.isArray || function (arr) {
22007
- return toString.call(arr) == '[object Array]';
22008
- };
22009
-
22010
- },{}],316:[function(require,module,exports){
22011
22004
  'use strict';
22012
22005
 
22013
22006
 
@@ -22016,7 +22009,7 @@ var yaml = require('./lib/js-yaml.js');
22016
22009
 
22017
22010
  module.exports = yaml;
22018
22011
 
22019
- },{"./lib/js-yaml.js":317}],317:[function(require,module,exports){
22012
+ },{"./lib/js-yaml.js":316}],316:[function(require,module,exports){
22020
22013
  'use strict';
22021
22014
 
22022
22015
 
@@ -22057,7 +22050,7 @@ module.exports.parse = deprecated('parse');
22057
22050
  module.exports.compose = deprecated('compose');
22058
22051
  module.exports.addConstructor = deprecated('addConstructor');
22059
22052
 
22060
- },{"./js-yaml/dumper":319,"./js-yaml/exception":320,"./js-yaml/loader":321,"./js-yaml/schema":323,"./js-yaml/schema/core":324,"./js-yaml/schema/default_full":325,"./js-yaml/schema/default_safe":326,"./js-yaml/schema/failsafe":327,"./js-yaml/schema/json":328,"./js-yaml/type":329}],318:[function(require,module,exports){
22053
+ },{"./js-yaml/dumper":318,"./js-yaml/exception":319,"./js-yaml/loader":320,"./js-yaml/schema":322,"./js-yaml/schema/core":323,"./js-yaml/schema/default_full":324,"./js-yaml/schema/default_safe":325,"./js-yaml/schema/failsafe":326,"./js-yaml/schema/json":327,"./js-yaml/type":328}],317:[function(require,module,exports){
22061
22054
  'use strict';
22062
22055
 
22063
22056
 
@@ -22118,7 +22111,7 @@ module.exports.repeat = repeat;
22118
22111
  module.exports.isNegativeZero = isNegativeZero;
22119
22112
  module.exports.extend = extend;
22120
22113
 
22121
- },{}],319:[function(require,module,exports){
22114
+ },{}],318:[function(require,module,exports){
22122
22115
  'use strict';
22123
22116
 
22124
22117
  /*eslint-disable no-use-before-define*/
@@ -22945,7 +22938,7 @@ function safeDump(input, options) {
22945
22938
  module.exports.dump = dump;
22946
22939
  module.exports.safeDump = safeDump;
22947
22940
 
22948
- },{"./common":318,"./exception":320,"./schema/default_full":325,"./schema/default_safe":326}],320:[function(require,module,exports){
22941
+ },{"./common":317,"./exception":319,"./schema/default_full":324,"./schema/default_safe":325}],319:[function(require,module,exports){
22949
22942
  // YAML error class. http://stackoverflow.com/questions/8458984
22950
22943
  //
22951
22944
  'use strict';
@@ -22990,7 +22983,7 @@ YAMLException.prototype.toString = function toString(compact) {
22990
22983
 
22991
22984
  module.exports = YAMLException;
22992
22985
 
22993
- },{}],321:[function(require,module,exports){
22986
+ },{}],320:[function(require,module,exports){
22994
22987
  'use strict';
22995
22988
 
22996
22989
  /*eslint-disable max-len,no-use-before-define*/
@@ -24590,7 +24583,7 @@ module.exports.load = load;
24590
24583
  module.exports.safeLoadAll = safeLoadAll;
24591
24584
  module.exports.safeLoad = safeLoad;
24592
24585
 
24593
- },{"./common":318,"./exception":320,"./mark":322,"./schema/default_full":325,"./schema/default_safe":326}],322:[function(require,module,exports){
24586
+ },{"./common":317,"./exception":319,"./mark":321,"./schema/default_full":324,"./schema/default_safe":325}],321:[function(require,module,exports){
24594
24587
  'use strict';
24595
24588
 
24596
24589
 
@@ -24668,7 +24661,7 @@ Mark.prototype.toString = function toString(compact) {
24668
24661
 
24669
24662
  module.exports = Mark;
24670
24663
 
24671
- },{"./common":318}],323:[function(require,module,exports){
24664
+ },{"./common":317}],322:[function(require,module,exports){
24672
24665
  'use strict';
24673
24666
 
24674
24667
  /*eslint-disable max-len*/
@@ -24778,7 +24771,7 @@ Schema.create = function createSchema() {
24778
24771
 
24779
24772
  module.exports = Schema;
24780
24773
 
24781
- },{"./common":318,"./exception":320,"./type":329}],324:[function(require,module,exports){
24774
+ },{"./common":317,"./exception":319,"./type":328}],323:[function(require,module,exports){
24782
24775
  // Standard YAML's Core schema.
24783
24776
  // http://www.yaml.org/spec/1.2/spec.html#id2804923
24784
24777
  //
@@ -24798,7 +24791,7 @@ module.exports = new Schema({
24798
24791
  ]
24799
24792
  });
24800
24793
 
24801
- },{"../schema":323,"./json":328}],325:[function(require,module,exports){
24794
+ },{"../schema":322,"./json":327}],324:[function(require,module,exports){
24802
24795
  // JS-YAML's default schema for `load` function.
24803
24796
  // It is not described in the YAML specification.
24804
24797
  //
@@ -24825,7 +24818,7 @@ module.exports = Schema.DEFAULT = new Schema({
24825
24818
  ]
24826
24819
  });
24827
24820
 
24828
- },{"../schema":323,"../type/js/function":334,"../type/js/regexp":335,"../type/js/undefined":336,"./default_safe":326}],326:[function(require,module,exports){
24821
+ },{"../schema":322,"../type/js/function":333,"../type/js/regexp":334,"../type/js/undefined":335,"./default_safe":325}],325:[function(require,module,exports){
24829
24822
  // JS-YAML's default schema for `safeLoad` function.
24830
24823
  // It is not described in the YAML specification.
24831
24824
  //
@@ -24855,7 +24848,7 @@ module.exports = new Schema({
24855
24848
  ]
24856
24849
  });
24857
24850
 
24858
- },{"../schema":323,"../type/binary":330,"../type/merge":338,"../type/omap":340,"../type/pairs":341,"../type/set":343,"../type/timestamp":345,"./core":324}],327:[function(require,module,exports){
24851
+ },{"../schema":322,"../type/binary":329,"../type/merge":337,"../type/omap":339,"../type/pairs":340,"../type/set":342,"../type/timestamp":344,"./core":323}],326:[function(require,module,exports){
24859
24852
  // Standard YAML's Failsafe schema.
24860
24853
  // http://www.yaml.org/spec/1.2/spec.html#id2802346
24861
24854
 
@@ -24874,7 +24867,7 @@ module.exports = new Schema({
24874
24867
  ]
24875
24868
  });
24876
24869
 
24877
- },{"../schema":323,"../type/map":337,"../type/seq":342,"../type/str":344}],328:[function(require,module,exports){
24870
+ },{"../schema":322,"../type/map":336,"../type/seq":341,"../type/str":343}],327:[function(require,module,exports){
24878
24871
  // Standard YAML's JSON schema.
24879
24872
  // http://www.yaml.org/spec/1.2/spec.html#id2803231
24880
24873
  //
@@ -24901,7 +24894,7 @@ module.exports = new Schema({
24901
24894
  ]
24902
24895
  });
24903
24896
 
24904
- },{"../schema":323,"../type/bool":331,"../type/float":332,"../type/int":333,"../type/null":339,"./failsafe":327}],329:[function(require,module,exports){
24897
+ },{"../schema":322,"../type/bool":330,"../type/float":331,"../type/int":332,"../type/null":338,"./failsafe":326}],328:[function(require,module,exports){
24905
24898
  'use strict';
24906
24899
 
24907
24900
  var YAMLException = require('./exception');
@@ -24964,7 +24957,7 @@ function Type(tag, options) {
24964
24957
 
24965
24958
  module.exports = Type;
24966
24959
 
24967
- },{"./exception":320}],330:[function(require,module,exports){
24960
+ },{"./exception":319}],329:[function(require,module,exports){
24968
24961
  'use strict';
24969
24962
 
24970
24963
  /*eslint-disable no-bitwise*/
@@ -25104,7 +25097,7 @@ module.exports = new Type('tag:yaml.org,2002:binary', {
25104
25097
  represent: representYamlBinary
25105
25098
  });
25106
25099
 
25107
- },{"../type":329}],331:[function(require,module,exports){
25100
+ },{"../type":328}],330:[function(require,module,exports){
25108
25101
  'use strict';
25109
25102
 
25110
25103
  var Type = require('../type');
@@ -25141,7 +25134,7 @@ module.exports = new Type('tag:yaml.org,2002:bool', {
25141
25134
  defaultStyle: 'lowercase'
25142
25135
  });
25143
25136
 
25144
- },{"../type":329}],332:[function(require,module,exports){
25137
+ },{"../type":328}],331:[function(require,module,exports){
25145
25138
  'use strict';
25146
25139
 
25147
25140
  var common = require('../common');
@@ -25259,7 +25252,7 @@ module.exports = new Type('tag:yaml.org,2002:float', {
25259
25252
  defaultStyle: 'lowercase'
25260
25253
  });
25261
25254
 
25262
- },{"../common":318,"../type":329}],333:[function(require,module,exports){
25255
+ },{"../common":317,"../type":328}],332:[function(require,module,exports){
25263
25256
  'use strict';
25264
25257
 
25265
25258
  var common = require('../common');
@@ -25434,7 +25427,7 @@ module.exports = new Type('tag:yaml.org,2002:int', {
25434
25427
  }
25435
25428
  });
25436
25429
 
25437
- },{"../common":318,"../type":329}],334:[function(require,module,exports){
25430
+ },{"../common":317,"../type":328}],333:[function(require,module,exports){
25438
25431
  'use strict';
25439
25432
 
25440
25433
  var esprima;
@@ -25528,7 +25521,7 @@ module.exports = new Type('tag:yaml.org,2002:js/function', {
25528
25521
  represent: representJavascriptFunction
25529
25522
  });
25530
25523
 
25531
- },{"../../type":329}],335:[function(require,module,exports){
25524
+ },{"../../type":328}],334:[function(require,module,exports){
25532
25525
  'use strict';
25533
25526
 
25534
25527
  var Type = require('../../type');
@@ -25590,7 +25583,7 @@ module.exports = new Type('tag:yaml.org,2002:js/regexp', {
25590
25583
  represent: representJavascriptRegExp
25591
25584
  });
25592
25585
 
25593
- },{"../../type":329}],336:[function(require,module,exports){
25586
+ },{"../../type":328}],335:[function(require,module,exports){
25594
25587
  'use strict';
25595
25588
 
25596
25589
  var Type = require('../../type');
@@ -25620,7 +25613,7 @@ module.exports = new Type('tag:yaml.org,2002:js/undefined', {
25620
25613
  represent: representJavascriptUndefined
25621
25614
  });
25622
25615
 
25623
- },{"../../type":329}],337:[function(require,module,exports){
25616
+ },{"../../type":328}],336:[function(require,module,exports){
25624
25617
  'use strict';
25625
25618
 
25626
25619
  var Type = require('../type');
@@ -25630,7 +25623,7 @@ module.exports = new Type('tag:yaml.org,2002:map', {
25630
25623
  construct: function (data) { return data !== null ? data : {}; }
25631
25624
  });
25632
25625
 
25633
- },{"../type":329}],338:[function(require,module,exports){
25626
+ },{"../type":328}],337:[function(require,module,exports){
25634
25627
  'use strict';
25635
25628
 
25636
25629
  var Type = require('../type');
@@ -25644,7 +25637,7 @@ module.exports = new Type('tag:yaml.org,2002:merge', {
25644
25637
  resolve: resolveYamlMerge
25645
25638
  });
25646
25639
 
25647
- },{"../type":329}],339:[function(require,module,exports){
25640
+ },{"../type":328}],338:[function(require,module,exports){
25648
25641
  'use strict';
25649
25642
 
25650
25643
  var Type = require('../type');
@@ -25680,7 +25673,7 @@ module.exports = new Type('tag:yaml.org,2002:null', {
25680
25673
  defaultStyle: 'lowercase'
25681
25674
  });
25682
25675
 
25683
- },{"../type":329}],340:[function(require,module,exports){
25676
+ },{"../type":328}],339:[function(require,module,exports){
25684
25677
  'use strict';
25685
25678
 
25686
25679
  var Type = require('../type');
@@ -25726,7 +25719,7 @@ module.exports = new Type('tag:yaml.org,2002:omap', {
25726
25719
  construct: constructYamlOmap
25727
25720
  });
25728
25721
 
25729
- },{"../type":329}],341:[function(require,module,exports){
25722
+ },{"../type":328}],340:[function(require,module,exports){
25730
25723
  'use strict';
25731
25724
 
25732
25725
  var Type = require('../type');
@@ -25781,7 +25774,7 @@ module.exports = new Type('tag:yaml.org,2002:pairs', {
25781
25774
  construct: constructYamlPairs
25782
25775
  });
25783
25776
 
25784
- },{"../type":329}],342:[function(require,module,exports){
25777
+ },{"../type":328}],341:[function(require,module,exports){
25785
25778
  'use strict';
25786
25779
 
25787
25780
  var Type = require('../type');
@@ -25791,7 +25784,7 @@ module.exports = new Type('tag:yaml.org,2002:seq', {
25791
25784
  construct: function (data) { return data !== null ? data : []; }
25792
25785
  });
25793
25786
 
25794
- },{"../type":329}],343:[function(require,module,exports){
25787
+ },{"../type":328}],342:[function(require,module,exports){
25795
25788
  'use strict';
25796
25789
 
25797
25790
  var Type = require('../type');
@@ -25822,7 +25815,7 @@ module.exports = new Type('tag:yaml.org,2002:set', {
25822
25815
  construct: constructYamlSet
25823
25816
  });
25824
25817
 
25825
- },{"../type":329}],344:[function(require,module,exports){
25818
+ },{"../type":328}],343:[function(require,module,exports){
25826
25819
  'use strict';
25827
25820
 
25828
25821
  var Type = require('../type');
@@ -25832,7 +25825,7 @@ module.exports = new Type('tag:yaml.org,2002:str', {
25832
25825
  construct: function (data) { return data !== null ? data : ''; }
25833
25826
  });
25834
25827
 
25835
- },{"../type":329}],345:[function(require,module,exports){
25828
+ },{"../type":328}],344:[function(require,module,exports){
25836
25829
  'use strict';
25837
25830
 
25838
25831
  var Type = require('../type');
@@ -25922,7 +25915,7 @@ module.exports = new Type('tag:yaml.org,2002:timestamp', {
25922
25915
  represent: representYamlTimestamp
25923
25916
  });
25924
25917
 
25925
- },{"../type":329}],346:[function(require,module,exports){
25918
+ },{"../type":328}],345:[function(require,module,exports){
25926
25919
  module.exports = compile;
25927
25920
 
25928
25921
  var BaseFuncs = require("boolbase"),
@@ -25963,7 +25956,7 @@ function compile(parsed){
25963
25956
  return pos <= b && pos % a === bMod;
25964
25957
  };
25965
25958
  }
25966
- },{"boolbase":2}],347:[function(require,module,exports){
25959
+ },{"boolbase":2}],346:[function(require,module,exports){
25967
25960
  var parse = require("./parse.js"),
25968
25961
  compile = require("./compile.js");
25969
25962
 
@@ -25973,7 +25966,7 @@ module.exports = function nthCheck(formula){
25973
25966
 
25974
25967
  module.exports.parse = parse;
25975
25968
  module.exports.compile = compile;
25976
- },{"./compile.js":346,"./parse.js":348}],348:[function(require,module,exports){
25969
+ },{"./compile.js":345,"./parse.js":347}],347:[function(require,module,exports){
25977
25970
  module.exports = parse;
25978
25971
 
25979
25972
  //following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo
@@ -26015,7 +26008,7 @@ function parse(formula){
26015
26008
  }
26016
26009
  }
26017
26010
 
26018
- },{}],349:[function(require,module,exports){
26011
+ },{}],348:[function(require,module,exports){
26019
26012
  'use strict';
26020
26013
 
26021
26014
  // modified from https://github.com/es-shims/es5-shim
@@ -26158,7 +26151,7 @@ keysShim.shim = function shimObjectKeys() {
26158
26151
 
26159
26152
  module.exports = keysShim;
26160
26153
 
26161
- },{"./isArguments":350}],350:[function(require,module,exports){
26154
+ },{"./isArguments":349}],349:[function(require,module,exports){
26162
26155
  'use strict';
26163
26156
 
26164
26157
  var toStr = Object.prototype.toString;
@@ -26177,7 +26170,7 @@ module.exports = function isArguments(value) {
26177
26170
  return isArgs;
26178
26171
  };
26179
26172
 
26180
- },{}],351:[function(require,module,exports){
26173
+ },{}],350:[function(require,module,exports){
26181
26174
  'use strict';
26182
26175
 
26183
26176
  var ES = require('es-abstract/es7');
@@ -26196,7 +26189,7 @@ module.exports = function values(O) {
26196
26189
  return vals;
26197
26190
  };
26198
26191
 
26199
- },{"es-abstract/es7":291,"function-bind":304,"has":307}],352:[function(require,module,exports){
26192
+ },{"es-abstract/es7":291,"function-bind":304,"has":307}],351:[function(require,module,exports){
26200
26193
  'use strict';
26201
26194
 
26202
26195
  var define = require('define-properties');
@@ -26215,7 +26208,7 @@ define(polyfill, {
26215
26208
 
26216
26209
  module.exports = polyfill;
26217
26210
 
26218
- },{"./implementation":351,"./polyfill":353,"./shim":354,"define-properties":268}],353:[function(require,module,exports){
26211
+ },{"./implementation":350,"./polyfill":352,"./shim":353,"define-properties":268}],352:[function(require,module,exports){
26219
26212
  'use strict';
26220
26213
 
26221
26214
  var implementation = require('./implementation');
@@ -26224,7 +26217,7 @@ module.exports = function getPolyfill() {
26224
26217
  return typeof Object.values === 'function' ? Object.values : implementation;
26225
26218
  };
26226
26219
 
26227
- },{"./implementation":351}],354:[function(require,module,exports){
26220
+ },{"./implementation":350}],353:[function(require,module,exports){
26228
26221
  'use strict';
26229
26222
 
26230
26223
  var getPolyfill = require('./polyfill');
@@ -26240,7 +26233,7 @@ module.exports = function shimValues() {
26240
26233
  return polyfill;
26241
26234
  };
26242
26235
 
26243
- },{"./polyfill":353,"define-properties":268}],355:[function(require,module,exports){
26236
+ },{"./polyfill":352,"define-properties":268}],354:[function(require,module,exports){
26244
26237
  exports.endianness = function () { return 'LE' };
26245
26238
 
26246
26239
  exports.hostname = function () {
@@ -26291,7 +26284,7 @@ exports.homedir = function () {
26291
26284
  return '/'
26292
26285
  };
26293
26286
 
26294
- },{}],356:[function(require,module,exports){
26287
+ },{}],355:[function(require,module,exports){
26295
26288
  (function (process){
26296
26289
  // .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,
26297
26290
  // backported and transplited with Babel, with backwards-compat fixes
@@ -26597,7 +26590,7 @@ var substr = 'ab'.substr(-1) === 'b'
26597
26590
  ;
26598
26591
 
26599
26592
  }).call(this,require('_process'))
26600
- },{"_process":358}],357:[function(require,module,exports){
26593
+ },{"_process":357}],356:[function(require,module,exports){
26601
26594
  (function (process){
26602
26595
  'use strict';
26603
26596
 
@@ -26645,7 +26638,7 @@ function nextTick(fn, arg1, arg2, arg3) {
26645
26638
 
26646
26639
 
26647
26640
  }).call(this,require('_process'))
26648
- },{"_process":358}],358:[function(require,module,exports){
26641
+ },{"_process":357}],357:[function(require,module,exports){
26649
26642
  // shim for using process in browser
26650
26643
  var process = module.exports = {};
26651
26644
 
@@ -26831,10 +26824,10 @@ process.chdir = function (dir) {
26831
26824
  };
26832
26825
  process.umask = function() { return 0; };
26833
26826
 
26834
- },{}],359:[function(require,module,exports){
26827
+ },{}],358:[function(require,module,exports){
26835
26828
  module.exports = require('./lib/_stream_duplex.js');
26836
26829
 
26837
- },{"./lib/_stream_duplex.js":360}],360:[function(require,module,exports){
26830
+ },{"./lib/_stream_duplex.js":359}],359:[function(require,module,exports){
26838
26831
  // Copyright Joyent, Inc. and other Node contributors.
26839
26832
  //
26840
26833
  // Permission is hereby granted, free of charge, to any person obtaining a
@@ -26966,7 +26959,7 @@ Duplex.prototype._destroy = function (err, cb) {
26966
26959
 
26967
26960
  pna.nextTick(cb, err);
26968
26961
  };
26969
- },{"./_stream_readable":362,"./_stream_writable":364,"core-util-is":6,"inherits":309,"process-nextick-args":357}],361:[function(require,module,exports){
26962
+ },{"./_stream_readable":361,"./_stream_writable":363,"core-util-is":6,"inherits":309,"process-nextick-args":356}],360:[function(require,module,exports){
26970
26963
  // Copyright Joyent, Inc. and other Node contributors.
26971
26964
  //
26972
26965
  // Permission is hereby granted, free of charge, to any person obtaining a
@@ -27014,7 +27007,7 @@ function PassThrough(options) {
27014
27007
  PassThrough.prototype._transform = function (chunk, encoding, cb) {
27015
27008
  cb(null, chunk);
27016
27009
  };
27017
- },{"./_stream_transform":363,"core-util-is":6,"inherits":309}],362:[function(require,module,exports){
27010
+ },{"./_stream_transform":362,"core-util-is":6,"inherits":309}],361:[function(require,module,exports){
27018
27011
  (function (process,global){
27019
27012
  // Copyright Joyent, Inc. and other Node contributors.
27020
27013
  //
@@ -28036,7 +28029,7 @@ function indexOf(xs, x) {
28036
28029
  return -1;
28037
28030
  }
28038
28031
  }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
28039
- },{"./_stream_duplex":360,"./internal/streams/BufferList":365,"./internal/streams/destroy":366,"./internal/streams/stream":367,"_process":358,"core-util-is":6,"events":302,"inherits":309,"isarray":315,"process-nextick-args":357,"safe-buffer":372,"string_decoder/":387,"util":3}],363:[function(require,module,exports){
28032
+ },{"./_stream_duplex":359,"./internal/streams/BufferList":364,"./internal/streams/destroy":365,"./internal/streams/stream":366,"_process":357,"core-util-is":6,"events":302,"inherits":309,"isarray":367,"process-nextick-args":356,"safe-buffer":372,"string_decoder/":387,"util":3}],362:[function(require,module,exports){
28040
28033
  // Copyright Joyent, Inc. and other Node contributors.
28041
28034
  //
28042
28035
  // Permission is hereby granted, free of charge, to any person obtaining a
@@ -28251,7 +28244,7 @@ function done(stream, er, data) {
28251
28244
 
28252
28245
  return stream.push(null);
28253
28246
  }
28254
- },{"./_stream_duplex":360,"core-util-is":6,"inherits":309}],364:[function(require,module,exports){
28247
+ },{"./_stream_duplex":359,"core-util-is":6,"inherits":309}],363:[function(require,module,exports){
28255
28248
  (function (process,global,setImmediate){
28256
28249
  // Copyright Joyent, Inc. and other Node contributors.
28257
28250
  //
@@ -28941,7 +28934,7 @@ Writable.prototype._destroy = function (err, cb) {
28941
28934
  cb(err);
28942
28935
  };
28943
28936
  }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
28944
- },{"./_stream_duplex":360,"./internal/streams/destroy":366,"./internal/streams/stream":367,"_process":358,"core-util-is":6,"inherits":309,"process-nextick-args":357,"safe-buffer":372,"timers":444,"util-deprecate":446}],365:[function(require,module,exports){
28937
+ },{"./_stream_duplex":359,"./internal/streams/destroy":365,"./internal/streams/stream":366,"_process":357,"core-util-is":6,"inherits":309,"process-nextick-args":356,"safe-buffer":372,"timers":444,"util-deprecate":446}],364:[function(require,module,exports){
28945
28938
  'use strict';
28946
28939
 
28947
28940
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@@ -29021,7 +29014,7 @@ if (util && util.inspect && util.inspect.custom) {
29021
29014
  return this.constructor.name + ' ' + obj;
29022
29015
  };
29023
29016
  }
29024
- },{"safe-buffer":372,"util":3}],366:[function(require,module,exports){
29017
+ },{"safe-buffer":372,"util":3}],365:[function(require,module,exports){
29025
29018
  'use strict';
29026
29019
 
29027
29020
  /*<replacement>*/
@@ -29096,10 +29089,17 @@ module.exports = {
29096
29089
  destroy: destroy,
29097
29090
  undestroy: undestroy
29098
29091
  };
29099
- },{"process-nextick-args":357}],367:[function(require,module,exports){
29092
+ },{"process-nextick-args":356}],366:[function(require,module,exports){
29100
29093
  module.exports = require('events').EventEmitter;
29101
29094
 
29102
- },{"events":302}],368:[function(require,module,exports){
29095
+ },{"events":302}],367:[function(require,module,exports){
29096
+ var toString = {}.toString;
29097
+
29098
+ module.exports = Array.isArray || function (arr) {
29099
+ return toString.call(arr) == '[object Array]';
29100
+ };
29101
+
29102
+ },{}],368:[function(require,module,exports){
29103
29103
  module.exports = require('./readable').PassThrough
29104
29104
 
29105
29105
  },{"./readable":369}],369:[function(require,module,exports){
@@ -29111,13 +29111,13 @@ exports.Duplex = require('./lib/_stream_duplex.js');
29111
29111
  exports.Transform = require('./lib/_stream_transform.js');
29112
29112
  exports.PassThrough = require('./lib/_stream_passthrough.js');
29113
29113
 
29114
- },{"./lib/_stream_duplex.js":360,"./lib/_stream_passthrough.js":361,"./lib/_stream_readable.js":362,"./lib/_stream_transform.js":363,"./lib/_stream_writable.js":364}],370:[function(require,module,exports){
29114
+ },{"./lib/_stream_duplex.js":359,"./lib/_stream_passthrough.js":360,"./lib/_stream_readable.js":361,"./lib/_stream_transform.js":362,"./lib/_stream_writable.js":363}],370:[function(require,module,exports){
29115
29115
  module.exports = require('./readable').Transform
29116
29116
 
29117
29117
  },{"./readable":369}],371:[function(require,module,exports){
29118
29118
  module.exports = require('./lib/_stream_writable.js');
29119
29119
 
29120
- },{"./lib/_stream_writable.js":364}],372:[function(require,module,exports){
29120
+ },{"./lib/_stream_writable.js":363}],372:[function(require,module,exports){
29121
29121
  /* eslint-disable node/no-deprecated-api */
29122
29122
  var buffer = require('buffer')
29123
29123
  var Buffer = buffer.Buffer
@@ -33980,7 +33980,7 @@ Stream.prototype.pipe = function(dest, options) {
33980
33980
  return dest;
33981
33981
  };
33982
33982
 
33983
- },{"events":302,"inherits":309,"readable-stream/duplex.js":359,"readable-stream/passthrough.js":368,"readable-stream/readable.js":369,"readable-stream/transform.js":370,"readable-stream/writable.js":371}],387:[function(require,module,exports){
33983
+ },{"events":302,"inherits":309,"readable-stream/duplex.js":358,"readable-stream/passthrough.js":368,"readable-stream/readable.js":369,"readable-stream/transform.js":370,"readable-stream/writable.js":371}],387:[function(require,module,exports){
33984
33984
  // Copyright Joyent, Inc. and other Node contributors.
33985
33985
  //
33986
33986
  // Permission is hereby granted, free of charge, to any person obtaining a
@@ -34719,7 +34719,7 @@ function optimizePluginsArray(plugins) {
34719
34719
  }
34720
34720
 
34721
34721
  }).call(this,"/node_modules/svgo/lib/svgo")
34722
- },{"fs":4,"js-yaml":316}],390:[function(require,module,exports){
34722
+ },{"fs":4,"js-yaml":315}],390:[function(require,module,exports){
34723
34723
  'use strict';
34724
34724
 
34725
34725
  var values = require('object.values');
@@ -34858,7 +34858,7 @@ CSSClassList.prototype.contains = function(className) {
34858
34858
 
34859
34859
 
34860
34860
  module.exports = CSSClassList;
34861
- },{"object.values":352}],391:[function(require,module,exports){
34861
+ },{"object.values":351}],391:[function(require,module,exports){
34862
34862
  'use strict';
34863
34863
 
34864
34864
  var baseCssAdapter = require('css-select-base-adapter');
@@ -35550,7 +35550,7 @@ JS2SVG.prototype.createText = function(text) {
35550
35550
 
35551
35551
  };
35552
35552
 
35553
- },{"../../plugins/_collections.js":398,"os":355}],394:[function(require,module,exports){
35553
+ },{"../../plugins/_collections.js":398,"os":354}],394:[function(require,module,exports){
35554
35554
  'use strict';
35555
35555
 
35556
35556
  var cssSelect = require('css-select');
@@ -43669,7 +43669,7 @@ exports.fn = function(node, opts, extra) {
43669
43669
  return node;
43670
43670
  };
43671
43671
 
43672
- },{"./_collections.js":398,"css-tree":19,"css-url-regex":119,"path":356,"unquote":445}],420:[function(require,module,exports){
43672
+ },{"./_collections.js":398,"css-tree":19,"css-url-regex":119,"path":355,"unquote":445}],420:[function(require,module,exports){
43673
43673
  'use strict';
43674
43674
 
43675
43675
  exports.type = 'perItem';
@@ -45167,7 +45167,7 @@ exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate :
45167
45167
  delete immediateIds[id];
45168
45168
  };
45169
45169
  }).call(this,require("timers").setImmediate,require("timers").clearImmediate)
45170
- },{"process/browser.js":358,"timers":444}],445:[function(require,module,exports){
45170
+ },{"process/browser.js":357,"timers":444}],445:[function(require,module,exports){
45171
45171
  var reg = /[\'\"]/
45172
45172
 
45173
45173
  module.exports = function unquote(str) {
@@ -45335,7 +45335,7 @@ function SVGO(options) {
45335
45335
  var lastSize = Number.POSITIVE_INFINITY;
45336
45336
  var newSize = 0;
45337
45337
  var counter = 0;
45338
-
45338
+ self.svgjs = undefined;
45339
45339
  SVG2JS(svgstr, function(svgjs) {
45340
45340
  if (svgjs.error) {
45341
45341
  // If we don't have anything yet, throw an exception.
@@ -45363,8 +45363,12 @@ function SVGO(options) {
45363
45363
  self.svgjs = svgjs;
45364
45364
  }
45365
45365
  });
45366
+ var xml;
45367
+ if (self.svgjs !== undefined && typeof self.svgjs.content !== "undefined") {
45368
+ xml = JS2SVG(self.svgjs, self.options.js2svg).data;
45369
+ }
45366
45370
  return {
45367
- data: JS2SVG(self.svgjs, self.options.js2svg).data,
45371
+ data: xml,
45368
45372
  errors: errors,
45369
45373
  passes: counter
45370
45374
  };
@@ -45388,5 +45392,6 @@ module.exports = function(options, data) {
45388
45392
  var svgoContext = new SVGO(options);
45389
45393
  return svgoContext.optimize(data);
45390
45394
  };
45395
+
45391
45396
  },{"../node_modules/svgo/lib/svgo/config.js":389,"../node_modules/svgo/lib/svgo/js2svg.js":393,"../node_modules/svgo/lib/svgo/plugins.js":395,"../node_modules/svgo/lib/svgo/svg2js.js":396,"../node_modules/svgo/plugins/addAttributesToSVGElement":401,"../node_modules/svgo/plugins/addClassesToSVGElement":402,"../node_modules/svgo/plugins/cleanupAttrs":403,"../node_modules/svgo/plugins/cleanupEnableBackground":404,"../node_modules/svgo/plugins/cleanupIDs":405,"../node_modules/svgo/plugins/cleanupListOfValues":406,"../node_modules/svgo/plugins/cleanupNumericValues":407,"../node_modules/svgo/plugins/collapseGroups":408,"../node_modules/svgo/plugins/convertColors":409,"../node_modules/svgo/plugins/convertPathData":410,"../node_modules/svgo/plugins/convertShapeToPath":411,"../node_modules/svgo/plugins/convertStyleToAttrs":412,"../node_modules/svgo/plugins/convertTransform":413,"../node_modules/svgo/plugins/inlineStyles":414,"../node_modules/svgo/plugins/mergePaths":415,"../node_modules/svgo/plugins/minifyStyles":416,"../node_modules/svgo/plugins/moveElemsAttrsToGroup":417,"../node_modules/svgo/plugins/moveGroupAttrsToElems":418,"../node_modules/svgo/plugins/prefixIds":419,"../node_modules/svgo/plugins/removeComments":420,"../node_modules/svgo/plugins/removeDesc":421,"../node_modules/svgo/plugins/removeDimensions":422,"../node_modules/svgo/plugins/removeDoctype":423,"../node_modules/svgo/plugins/removeEditorsNSData":424,"../node_modules/svgo/plugins/removeElementsByAttr":425,"../node_modules/svgo/plugins/removeEmptyAttrs":426,"../node_modules/svgo/plugins/removeEmptyContainers":427,"../node_modules/svgo/plugins/removeEmptyText":428,"../node_modules/svgo/plugins/removeHiddenElems":429,"../node_modules/svgo/plugins/removeMetadata":430,"../node_modules/svgo/plugins/removeNonInheritableGroupAttrs":431,"../node_modules/svgo/plugins/removeRasterImages":432,"../node_modules/svgo/plugins/removeScriptElement":433,"../node_modules/svgo/plugins/removeStyleElement":434,"../node_modules/svgo/plugins/removeTitle":435,"../node_modules/svgo/plugins/removeUnknownsAndDefaults":436,"../node_modules/svgo/plugins/removeUnusedNS":437,"../node_modules/svgo/plugins/removeUselessDefs":438,"../node_modules/svgo/plugins/removeUselessStrokeAndFill":439,"../node_modules/svgo/plugins/removeViewBox":440,"../node_modules/svgo/plugins/removeXMLNS":441,"../node_modules/svgo/plugins/removeXMLProcInst":442,"../node_modules/svgo/plugins/sortAttrs":443}]},{},[447])(447)
45392
45397
  });
@@ -78,7 +78,7 @@ function SVGO(options) {
78
78
  var lastSize = Number.POSITIVE_INFINITY;
79
79
  var newSize = 0;
80
80
  var counter = 0;
81
-
81
+ self.svgjs = undefined;
82
82
  SVG2JS(svgstr, function(svgjs) {
83
83
  if (svgjs.error) {
84
84
  // If we don't have anything yet, throw an exception.
@@ -106,8 +106,12 @@ function SVGO(options) {
106
106
  self.svgjs = svgjs;
107
107
  }
108
108
  });
109
+ var xml;
110
+ if (self.svgjs !== undefined && typeof self.svgjs.content !== "undefined") {
111
+ xml = JS2SVG(self.svgjs, self.options.js2svg).data;
112
+ }
109
113
  return {
110
- data: JS2SVG(self.svgjs, self.options.js2svg).data,
114
+ data: xml,
111
115
  errors: errors,
112
116
  passes: counter
113
117
  };
@@ -130,4 +134,4 @@ module.exports = function(options, data) {
130
134
  options.full = true;
131
135
  var svgoContext = new SVGO(options);
132
136
  return svgoContext.optimize(data);
133
- };
137
+ };
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svgo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Snijder