topojson-rails 1.4.9 → 1.6.19

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: 1a756f816b94e3121b70217ceee339fb68b56a8b
4
- data.tar.gz: da60fe15c8aada2034c6f9487f12b8da73468821
3
+ metadata.gz: 44d60d52b28fb0ae4815e2d6f39daab8b04c7730
4
+ data.tar.gz: 71589fc54f70d67bbc0d5478f5ab8c1709e4eea0
5
5
  SHA512:
6
- metadata.gz: 1d9f6a0e1bdfe71e54cf4838a97619e7261c5f71dc9ce7efdd9f6761125d64fff7c5a14a2217d8c9dd74b2a17f47924780f4c3b0a75f8f7458169e35e24839a5
7
- data.tar.gz: 71adb53096ac4a3936636eb77c8de2165713cee429111505d75625fab8f0c1a5bd9f1cfde4fe2a79fe7effde2526f99abff511734c59a40b5a036c6fa5e5eeb9
6
+ metadata.gz: 5d185a217b76fbbb77810e3babb877043a0bb4f05b6bdac9a4fe0fda7059057737adf71c5aaf671148de7b609e555320944f177e069a01cdb3aafeb8c1e7d6fb
7
+ data.tar.gz: c9f911d89d27f0361f52c9bc420af5da3b7c6413dbcefcb30e37ff4a40fcd7a7f9c9a1f586b8758639bdff66bb22f8b5b0e285ef7567dabf3de2cb3f91b9f55f
data/README.md CHANGED
@@ -18,17 +18,6 @@ Add the following directive to your JavaScript manifest file (application.js):
18
18
 
19
19
  //= require topojson
20
20
 
21
- ## HighSecurity
22
-
23
- To ensure that you're including a gem with original code, you can install this gem using a HighSecurity policy.
24
-
25
- gem cert --add <(curl -Ls https://gist.github.com/bai/5150087/raw/public_cert.pem)
26
- bundle install --trust-policy HighSecurity
27
-
28
- Or, if you don't use bundler:
29
-
30
- gem install topojson-rails -P HighSecurity
31
-
32
21
  ## Contributing
33
22
 
34
23
  1. Fork it
@@ -1,5 +1,5 @@
1
1
  module Topojson
2
2
  module Rails
3
- VERSION = "1.4.9"
3
+ VERSION = "1.6.19"
4
4
  end
5
5
  end
@@ -18,8 +18,5 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ["lib"]
20
20
 
21
- gem.signing_key = File.expand_path("~/.gem/private_key.pem") if $0 =~ /gem\z/
22
- gem.cert_chain = ["certs/bai.pem"]
23
-
24
21
  gem.add_dependency "railties", ">= 3.0", "< 5.0"
25
22
  end
@@ -1,15 +1,29 @@
1
1
  !function() {
2
2
  var topojson = {
3
- version: "1.4.9",
4
- mesh: mesh,
3
+ version: "1.6.19",
4
+ mesh: function(topology) { return object(topology, meshArcs.apply(this, arguments)); },
5
+ meshArcs: meshArcs,
6
+ merge: function(topology) { return object(topology, mergeArcs.apply(this, arguments)); },
7
+ mergeArcs: mergeArcs,
5
8
  feature: featureOrCollection,
6
9
  neighbors: neighbors,
7
10
  presimplify: presimplify
8
11
  };
9
12
 
10
- function merge(topology, arcs) {
11
- var fragmentByStart = {},
12
- fragmentByEnd = {};
13
+ function stitchArcs(topology, arcs) {
14
+ var stitchedArcs = {},
15
+ fragmentByStart = {},
16
+ fragmentByEnd = {},
17
+ fragments = [],
18
+ emptyIndex = -1;
19
+
20
+ // Stitch empty arcs first, since they may be subsumed by other arcs.
21
+ arcs.forEach(function(i, j) {
22
+ var arc = topology.arcs[i < 0 ? ~i : i], t;
23
+ if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {
24
+ t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;
25
+ }
26
+ });
13
27
 
14
28
  arcs.forEach(function(i) {
15
29
  var e = ends(i),
@@ -25,11 +39,6 @@
25
39
  delete fragmentByStart[g.start];
26
40
  var fg = g === f ? f : f.concat(g);
27
41
  fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;
28
- } else if (g = fragmentByEnd[end]) {
29
- delete fragmentByStart[g.start];
30
- delete fragmentByEnd[g.end];
31
- var fg = f.concat(g.map(function(i) { return ~i; }).reverse());
32
- fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.start] = fg;
33
42
  } else {
34
43
  fragmentByStart[f.start] = fragmentByEnd[f.end] = f;
35
44
  }
@@ -41,43 +50,6 @@
41
50
  delete fragmentByEnd[g.end];
42
51
  var gf = g === f ? f : g.concat(f);
43
52
  fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;
44
- } else if (g = fragmentByStart[start]) {
45
- delete fragmentByStart[g.start];
46
- delete fragmentByEnd[g.end];
47
- var gf = g.map(function(i) { return ~i; }).reverse().concat(f);
48
- fragmentByStart[gf.start = g.end] = fragmentByEnd[gf.end = f.end] = gf;
49
- } else {
50
- fragmentByStart[f.start] = fragmentByEnd[f.end] = f;
51
- }
52
- } else if (f = fragmentByStart[start]) {
53
- delete fragmentByStart[f.start];
54
- f.unshift(~i);
55
- f.start = end;
56
- if (g = fragmentByEnd[end]) {
57
- delete fragmentByEnd[g.end];
58
- var gf = g === f ? f : g.concat(f);
59
- fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;
60
- } else if (g = fragmentByStart[end]) {
61
- delete fragmentByStart[g.start];
62
- delete fragmentByEnd[g.end];
63
- var gf = g.map(function(i) { return ~i; }).reverse().concat(f);
64
- fragmentByStart[gf.start = g.end] = fragmentByEnd[gf.end = f.end] = gf;
65
- } else {
66
- fragmentByStart[f.start] = fragmentByEnd[f.end] = f;
67
- }
68
- } else if (f = fragmentByEnd[end]) {
69
- delete fragmentByEnd[f.end];
70
- f.push(~i);
71
- f.end = start;
72
- if (g = fragmentByEnd[start]) {
73
- delete fragmentByStart[g.start];
74
- var fg = g === f ? f : f.concat(g);
75
- fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;
76
- } else if (g = fragmentByStart[start]) {
77
- delete fragmentByStart[g.start];
78
- delete fragmentByEnd[g.end];
79
- var fg = f.concat(g.map(function(i) { return ~i; }).reverse());
80
- fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.start] = fg;
81
53
  } else {
82
54
  fragmentByStart[f.start] = fragmentByEnd[f.end] = f;
83
55
  }
@@ -88,17 +60,31 @@
88
60
  });
89
61
 
90
62
  function ends(i) {
91
- var arc = topology.arcs[i], p0 = arc[0], p1 = [0, 0];
92
- arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });
93
- return [p0, p1];
63
+ var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;
64
+ if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });
65
+ else p1 = arc[arc.length - 1];
66
+ return i < 0 ? [p1, p0] : [p0, p1];
94
67
  }
95
68
 
96
- var fragments = [];
97
- for (var k in fragmentByEnd) fragments.push(fragmentByEnd[k]);
69
+ function flush(fragmentByEnd, fragmentByStart) {
70
+ for (var k in fragmentByEnd) {
71
+ var f = fragmentByEnd[k];
72
+ delete fragmentByStart[f.start];
73
+ delete f.start;
74
+ delete f.end;
75
+ f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });
76
+ fragments.push(f);
77
+ }
78
+ }
79
+
80
+ flush(fragmentByEnd, fragmentByStart);
81
+ flush(fragmentByStart, fragmentByEnd);
82
+ arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });
83
+
98
84
  return fragments;
99
85
  }
100
86
 
101
- function mesh(topology, o, filter) {
87
+ function meshArcs(topology, o, filter) {
102
88
  var arcs = [];
103
89
 
104
90
  if (arguments.length > 1) {
@@ -106,8 +92,8 @@
106
92
  geom;
107
93
 
108
94
  function arc(i) {
109
- if (i < 0) i = ~i;
110
- (geomsByArc[i] || (geomsByArc[i] = [])).push(geom);
95
+ var j = i < 0 ? ~i : i;
96
+ (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});
111
97
  }
112
98
 
113
99
  function line(arcs) {
@@ -120,10 +106,7 @@
120
106
 
121
107
  function geometry(o) {
122
108
  if (o.type === "GeometryCollection") o.geometries.forEach(geometry);
123
- else if (o.type in geometryType) {
124
- geom = o;
125
- geometryType[o.type](o.arcs);
126
- }
109
+ else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs);
127
110
  }
128
111
 
129
112
  var geometryType = {
@@ -136,13 +119,100 @@
136
119
  geometry(o);
137
120
 
138
121
  geomsByArc.forEach(arguments.length < 3
139
- ? function(geoms, i) { arcs.push(i); }
140
- : function(geoms, i) { if (filter(geoms[0], geoms[geoms.length - 1])) arcs.push(i); });
122
+ ? function(geoms) { arcs.push(geoms[0].i); }
123
+ : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });
141
124
  } else {
142
125
  for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i);
143
126
  }
144
127
 
145
- return object(topology, {type: "MultiLineString", arcs: merge(topology, arcs)});
128
+ return {type: "MultiLineString", arcs: stitchArcs(topology, arcs)};
129
+ }
130
+
131
+ function mergeArcs(topology, objects) {
132
+ var polygonsByArc = {},
133
+ polygons = [],
134
+ components = [];
135
+
136
+ objects.forEach(function(o) {
137
+ if (o.type === "Polygon") register(o.arcs);
138
+ else if (o.type === "MultiPolygon") o.arcs.forEach(register);
139
+ });
140
+
141
+ function register(polygon) {
142
+ polygon.forEach(function(ring) {
143
+ ring.forEach(function(arc) {
144
+ (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);
145
+ });
146
+ });
147
+ polygons.push(polygon);
148
+ }
149
+
150
+ function exterior(ring) {
151
+ return cartesianRingArea(object(topology, {type: "Polygon", arcs: [ring]}).coordinates[0]) > 0; // TODO allow spherical?
152
+ }
153
+
154
+ polygons.forEach(function(polygon) {
155
+ if (!polygon._) {
156
+ var component = [],
157
+ neighbors = [polygon];
158
+ polygon._ = 1;
159
+ components.push(component);
160
+ while (polygon = neighbors.pop()) {
161
+ component.push(polygon);
162
+ polygon.forEach(function(ring) {
163
+ ring.forEach(function(arc) {
164
+ polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {
165
+ if (!polygon._) {
166
+ polygon._ = 1;
167
+ neighbors.push(polygon);
168
+ }
169
+ });
170
+ });
171
+ });
172
+ }
173
+ }
174
+ });
175
+
176
+ polygons.forEach(function(polygon) {
177
+ delete polygon._;
178
+ });
179
+
180
+ return {
181
+ type: "MultiPolygon",
182
+ arcs: components.map(function(polygons) {
183
+ var arcs = [];
184
+
185
+ // Extract the exterior (unique) arcs.
186
+ polygons.forEach(function(polygon) {
187
+ polygon.forEach(function(ring) {
188
+ ring.forEach(function(arc) {
189
+ if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {
190
+ arcs.push(arc);
191
+ }
192
+ });
193
+ });
194
+ });
195
+
196
+ // Stitch the arcs into one or more rings.
197
+ arcs = stitchArcs(topology, arcs);
198
+
199
+ // If more than one ring is returned,
200
+ // at most one of these rings can be the exterior;
201
+ // this exterior ring has the same winding order
202
+ // as any exterior ring in the original polygons.
203
+ if ((n = arcs.length) > 1) {
204
+ var sgn = exterior(polygons[0][0]);
205
+ for (var i = 0, t; i < n; ++i) {
206
+ if (sgn === exterior(arcs[i])) {
207
+ t = arcs[0], arcs[0] = arcs[i], arcs[i] = t;
208
+ break;
209
+ }
210
+ }
211
+ }
212
+
213
+ return arcs;
214
+ })
215
+ };
146
216
  }
147
217
 
148
218
  function featureOrCollection(topology, o) {
@@ -279,16 +349,23 @@
279
349
  function presimplify(topology, triangleArea) {
280
350
  var absolute = transformAbsolute(topology.transform),
281
351
  relative = transformRelative(topology.transform),
282
- heap = minHeap(compareArea),
283
- maxArea = 0,
284
- triangle;
352
+ heap = minAreaHeap();
285
353
 
286
- if (!triangleArea) triangleArea = cartesianArea;
354
+ if (!triangleArea) triangleArea = cartesianTriangleArea;
287
355
 
288
356
  topology.arcs.forEach(function(arc) {
289
- var triangles = [];
290
-
291
- arc.forEach(absolute);
357
+ var triangles = [],
358
+ maxArea = 0,
359
+ triangle;
360
+
361
+ // To store each point’s effective area, we create a new array rather than
362
+ // extending the passed-in point to workaround a Chrome/V8 bug (getting
363
+ // stuck in smi mode). For midpoints, the initial effective area of
364
+ // Infinity will be computed in the next step.
365
+ for (var i = 0, n = arc.length, p; i < n; ++i) {
366
+ p = arc[i];
367
+ absolute(arc[i] = [p[0], p[1], Infinity], i);
368
+ }
292
369
 
293
370
  for (var i = 1, n = arc.length - 1; i < n; ++i) {
294
371
  triangle = arc.slice(i - 1, i + 2);
@@ -297,41 +374,36 @@
297
374
  heap.push(triangle);
298
375
  }
299
376
 
300
- // Always keep the arc endpoints!
301
- arc[0][2] = arc[n][2] = Infinity;
302
-
303
377
  for (var i = 0, n = triangles.length; i < n; ++i) {
304
378
  triangle = triangles[i];
305
379
  triangle.previous = triangles[i - 1];
306
380
  triangle.next = triangles[i + 1];
307
381
  }
308
- });
309
382
 
310
- while (triangle = heap.pop()) {
311
- var previous = triangle.previous,
312
- next = triangle.next;
313
-
314
- // If the area of the current point is less than that of the previous point
315
- // to be eliminated, use the latter's area instead. This ensures that the
316
- // current point cannot be eliminated without eliminating previously-
317
- // eliminated points.
318
- if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;
319
- else maxArea = triangle[1][2];
320
-
321
- if (previous) {
322
- previous.next = next;
323
- previous[2] = triangle[2];
324
- update(previous);
325
- }
383
+ while (triangle = heap.pop()) {
384
+ var previous = triangle.previous,
385
+ next = triangle.next;
386
+
387
+ // If the area of the current point is less than that of the previous point
388
+ // to be eliminated, use the latter's area instead. This ensures that the
389
+ // current point cannot be eliminated without eliminating previously-
390
+ // eliminated points.
391
+ if (triangle[1][2] < maxArea) triangle[1][2] = maxArea;
392
+ else maxArea = triangle[1][2];
393
+
394
+ if (previous) {
395
+ previous.next = next;
396
+ previous[2] = triangle[2];
397
+ update(previous);
398
+ }
326
399
 
327
- if (next) {
328
- next.previous = previous;
329
- next[0] = triangle[0];
330
- update(next);
400
+ if (next) {
401
+ next.previous = previous;
402
+ next[0] = triangle[0];
403
+ update(next);
404
+ }
331
405
  }
332
- }
333
406
 
334
- topology.arcs.forEach(function(arc) {
335
407
  arc.forEach(relative);
336
408
  });
337
409
 
@@ -344,72 +416,76 @@
344
416
  return topology;
345
417
  };
346
418
 
347
- function cartesianArea(triangle) {
348
- return Math.abs(
349
- (triangle[0][0] - triangle[2][0]) * (triangle[1][1] - triangle[0][1])
350
- - (triangle[0][0] - triangle[1][0]) * (triangle[2][1] - triangle[0][1])
351
- );
419
+ function cartesianRingArea(ring) {
420
+ var i = -1,
421
+ n = ring.length,
422
+ a,
423
+ b = ring[n - 1],
424
+ area = 0;
425
+
426
+ while (++i < n) {
427
+ a = b;
428
+ b = ring[i];
429
+ area += a[0] * b[1] - a[1] * b[0];
430
+ }
431
+
432
+ return area * .5;
433
+ }
434
+
435
+ function cartesianTriangleArea(triangle) {
436
+ var a = triangle[0], b = triangle[1], c = triangle[2];
437
+ return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]));
352
438
  }
353
439
 
354
440
  function compareArea(a, b) {
355
441
  return a[1][2] - b[1][2];
356
442
  }
357
443
 
358
- function minHeap(compare) {
444
+ function minAreaHeap() {
359
445
  var heap = {},
360
- array = [];
446
+ array = [],
447
+ size = 0;
361
448
 
362
- heap.push = function() {
363
- for (var i = 0, n = arguments.length; i < n; ++i) {
364
- var object = arguments[i];
365
- up(object.index = array.push(object) - 1);
366
- }
367
- return array.length;
449
+ heap.push = function(object) {
450
+ up(array[object._ = size] = object, size++);
451
+ return size;
368
452
  };
369
453
 
370
454
  heap.pop = function() {
371
- var removed = array[0],
372
- object = array.pop();
373
- if (array.length) {
374
- array[object.index = 0] = object;
375
- down(0);
376
- }
455
+ if (size <= 0) return;
456
+ var removed = array[0], object;
457
+ if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0);
377
458
  return removed;
378
459
  };
379
460
 
380
461
  heap.remove = function(removed) {
381
- var i = removed.index,
382
- object = array.pop();
383
- if (i !== array.length) {
384
- array[object.index = i] = object;
385
- (compare(object, removed) < 0 ? up : down)(i);
386
- }
462
+ var i = removed._, object;
463
+ if (array[i] !== removed) return; // invalid request
464
+ if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i);
387
465
  return i;
388
466
  };
389
467
 
390
- function up(i) {
391
- var object = array[i];
468
+ function up(object, i) {
392
469
  while (i > 0) {
393
- var up = ((i + 1) >> 1) - 1,
394
- parent = array[up];
395
- if (compare(object, parent) >= 0) break;
396
- array[parent.index = i] = parent;
397
- array[object.index = i = up] = object;
470
+ var j = ((i + 1) >> 1) - 1,
471
+ parent = array[j];
472
+ if (compareArea(object, parent) >= 0) break;
473
+ array[parent._ = i] = parent;
474
+ array[object._ = i = j] = object;
398
475
  }
399
476
  }
400
477
 
401
- function down(i) {
402
- var object = array[i];
478
+ function down(object, i) {
403
479
  while (true) {
404
- var right = (i + 1) << 1,
405
- left = right - 1,
406
- down = i,
407
- child = array[down];
408
- if (left < array.length && compare(array[left], child) < 0) child = array[down = left];
409
- if (right < array.length && compare(array[right], child) < 0) child = array[down = right];
410
- if (down === i) break;
411
- array[child.index = i] = child;
412
- array[object.index = i = down] = object;
480
+ var r = (i + 1) << 1,
481
+ l = r - 1,
482
+ j = i,
483
+ child = array[j];
484
+ if (l < size && compareArea(array[l], child) < 0) child = array[j = l];
485
+ if (r < size && compareArea(array[r], child) < 0) child = array[j = r];
486
+ if (j === i) break;
487
+ array[child._ = i] = child;
488
+ array[object._ = i = j] = object;
413
489
  }
414
490
  }
415
491
 
metadata CHANGED
@@ -1,35 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: topojson-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.9
4
+ version: 1.6.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Gorodetsky
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDSDCCAjCgAwIBAgIBATANBgkqhkiG9w0BAQUFADA1MQowCAYDVQQDDAF2MRMw
14
- EQYKCZImiZPyLGQBGRYDZ29yMRIwEAYKCZImiZPyLGQBGRYCaW8wHhcNMTMwNTIz
15
- MjA0MTI3WhcNMTQwNTIzMjA0MTI3WjA1MQowCAYDVQQDDAF2MRMwEQYKCZImiZPy
16
- LGQBGRYDZ29yMRIwEAYKCZImiZPyLGQBGRYCaW8wggEiMA0GCSqGSIb3DQEBAQUA
17
- A4IBDwAwggEKAoIBAQCtb8+GfjqcYl6M4IhIGomKsGgWEC4mwTXIq/Yl+jJAdP7s
18
- bdV3lWnZybUPKtdHSQIJcxbm8GZspTqSqDgsECI/laTyLj7Srqcbyivf/ov50Tg1
19
- CxMtt8STA6wNmY0ljO4SK72Pr8uQwFZIgNHBB9LcvrpmRn/TWDXlcqaq0db6QJKk
20
- jGOv74ukiQun+saqthpxwNN6wm0rj1GDulrDuMeeMj/XDgu0piNHhBtsgQ6KrN94
21
- cs0XGgwKihL0LdqWiOG9L8tZKeksKk72EcTpvaw1EYUfJ/rAcC8l6SluN2+BDMA0
22
- /4LU70O+wTwHcHv2HimtKdlcpS936qOez3lXUD+3AgMBAAGjYzBhMAkGA1UdEwQC
23
- MAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSRvHatldjBIKT5agA2bnkfm4KUxTAT
24
- BgNVHREEDDAKgQh2QGdvci5pbzATBgNVHRIEDDAKgQh2QGdvci5pbzANBgkqhkiG
25
- 9w0BAQUFAAOCAQEAmyGZCL6ISHS6UCkPAie1LZgyc+yS4ckMPtzBJtjODr5kfRTC
26
- tLb9W4epJ9Aa2aGkKy/NL8MFS0BwTJmjSfufFDwFZlw0kI9aAvL4Nx9OHWNen9Dm
27
- GtEWXXKpB0du12DBjfavJYl0QLcz18M0mtvug634t40H06GussO83uu7wHEvIPBP
28
- Z5VMAbKvOmDgaP2I9XxZ2/lDmBKDZkVNqmqYiScw2CWsKxVPx3vhMGprTIz4O8y/
29
- JCf887eMZl/8mEIeCLb+gH5sh5yJJpti2HTLnR4Q1QKWR/0T9tASoQPF3kL62n9+
30
- m1B90+fEzJsBDQIAsnLPqxjivWbIIfZ7GeGZyA==
31
- -----END CERTIFICATE-----
32
- date: 2014-03-10 00:00:00.000000000 Z
10
+ cert_chain: []
11
+ date: 2015-05-31 00:00:00.000000000 Z
33
12
  dependencies:
34
13
  - !ruby/object:Gem::Dependency
35
14
  name: railties
@@ -63,7 +42,6 @@ files:
63
42
  - LICENSE
64
43
  - README.md
65
44
  - Rakefile
66
- - certs/bai.pem
67
45
  - lib/topojson-rails.rb
68
46
  - lib/topojson-rails/version.rb
69
47
  - topojson-rails.gemspec
@@ -88,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
66
  version: '0'
89
67
  requirements: []
90
68
  rubyforge_project:
91
- rubygems_version: 2.2.2
69
+ rubygems_version: 2.4.7
92
70
  signing_key:
93
71
  specification_version: 4
94
72
  summary: Gemified topojson.js asset for Rails
@@ -1,3 +0,0 @@
1
- =Z�D0&�*;6�(�
2
- �i���H��Z���zǮ���Y|���i���E��<�ɘo�H{�]��釈U�a`C���^;�){/�vcH[?�Ш�@$-���
3
- r��Im����>`��)� ��� 6�=ց�`�fj����U���ٴ&�mѱ�J��8XA�%�1�h.���Q.ܛ� ��d#\�y
data.tar.gz.sig DELETED
Binary file
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDSDCCAjCgAwIBAgIBATANBgkqhkiG9w0BAQUFADA1MQowCAYDVQQDDAF2MRMw
3
- EQYKCZImiZPyLGQBGRYDZ29yMRIwEAYKCZImiZPyLGQBGRYCaW8wHhcNMTMwNTIz
4
- MjA0MTI3WhcNMTQwNTIzMjA0MTI3WjA1MQowCAYDVQQDDAF2MRMwEQYKCZImiZPy
5
- LGQBGRYDZ29yMRIwEAYKCZImiZPyLGQBGRYCaW8wggEiMA0GCSqGSIb3DQEBAQUA
6
- A4IBDwAwggEKAoIBAQCtb8+GfjqcYl6M4IhIGomKsGgWEC4mwTXIq/Yl+jJAdP7s
7
- bdV3lWnZybUPKtdHSQIJcxbm8GZspTqSqDgsECI/laTyLj7Srqcbyivf/ov50Tg1
8
- CxMtt8STA6wNmY0ljO4SK72Pr8uQwFZIgNHBB9LcvrpmRn/TWDXlcqaq0db6QJKk
9
- jGOv74ukiQun+saqthpxwNN6wm0rj1GDulrDuMeeMj/XDgu0piNHhBtsgQ6KrN94
10
- cs0XGgwKihL0LdqWiOG9L8tZKeksKk72EcTpvaw1EYUfJ/rAcC8l6SluN2+BDMA0
11
- /4LU70O+wTwHcHv2HimtKdlcpS936qOez3lXUD+3AgMBAAGjYzBhMAkGA1UdEwQC
12
- MAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSRvHatldjBIKT5agA2bnkfm4KUxTAT
13
- BgNVHREEDDAKgQh2QGdvci5pbzATBgNVHRIEDDAKgQh2QGdvci5pbzANBgkqhkiG
14
- 9w0BAQUFAAOCAQEAmyGZCL6ISHS6UCkPAie1LZgyc+yS4ckMPtzBJtjODr5kfRTC
15
- tLb9W4epJ9Aa2aGkKy/NL8MFS0BwTJmjSfufFDwFZlw0kI9aAvL4Nx9OHWNen9Dm
16
- GtEWXXKpB0du12DBjfavJYl0QLcz18M0mtvug634t40H06GussO83uu7wHEvIPBP
17
- Z5VMAbKvOmDgaP2I9XxZ2/lDmBKDZkVNqmqYiScw2CWsKxVPx3vhMGprTIz4O8y/
18
- JCf887eMZl/8mEIeCLb+gH5sh5yJJpti2HTLnR4Q1QKWR/0T9tASoQPF3kL62n9+
19
- m1B90+fEzJsBDQIAsnLPqxjivWbIIfZ7GeGZyA==
20
- -----END CERTIFICATE-----
metadata.gz.sig DELETED
Binary file