topojson-rails 1.4.9 → 1.6.19

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