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 +4 -4
- data/README.md +0 -11
- data/lib/topojson-rails/version.rb +1 -1
- data/topojson-rails.gemspec +0 -3
- data/vendor/assets/javascripts/topojson.js +214 -138
- metadata +4 -26
- checksums.yaml.gz.sig +0 -3
- data.tar.gz.sig +0 -0
- data/certs/bai.pem +0 -20
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44d60d52b28fb0ae4815e2d6f39daab8b04c7730
|
4
|
+
data.tar.gz: 71589fc54f70d67bbc0d5478f5ab8c1709e4eea0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/topojson-rails.gemspec
CHANGED
@@ -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
|
-
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
|
11
|
-
var
|
12
|
-
|
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
|
92
|
-
arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });
|
93
|
-
|
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
|
-
|
97
|
-
|
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
|
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
|
-
|
110
|
-
(geomsByArc[
|
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
|
140
|
-
: function(geoms
|
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
|
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 =
|
283
|
-
maxArea = 0,
|
284
|
-
triangle;
|
352
|
+
heap = minAreaHeap();
|
285
353
|
|
286
|
-
if (!triangleArea) triangleArea =
|
354
|
+
if (!triangleArea) triangleArea = cartesianTriangleArea;
|
287
355
|
|
288
356
|
topology.arcs.forEach(function(arc) {
|
289
|
-
var triangles = []
|
290
|
-
|
291
|
-
|
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
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
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
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
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
|
348
|
-
|
349
|
-
|
350
|
-
|
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
|
444
|
+
function minAreaHeap() {
|
359
445
|
var heap = {},
|
360
|
-
array = []
|
446
|
+
array = [],
|
447
|
+
size = 0;
|
361
448
|
|
362
|
-
heap.push = function() {
|
363
|
-
|
364
|
-
|
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
|
-
|
372
|
-
|
373
|
-
if (array.
|
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.
|
382
|
-
|
383
|
-
if (i !== array.
|
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
|
394
|
-
parent = array[
|
395
|
-
if (
|
396
|
-
array[parent.
|
397
|
-
array[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
|
405
|
-
|
406
|
-
|
407
|
-
child = array[
|
408
|
-
if (
|
409
|
-
if (
|
410
|
-
if (
|
411
|
-
array[child.
|
412
|
-
array[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
|
+
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.
|
69
|
+
rubygems_version: 2.4.7
|
92
70
|
signing_key:
|
93
71
|
specification_version: 4
|
94
72
|
summary: Gemified topojson.js asset for Rails
|
checksums.yaml.gz.sig
DELETED
data.tar.gz.sig
DELETED
Binary file
|
data/certs/bai.pem
DELETED
@@ -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
|