svgo 0.1.1 → 0.1.2

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: 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