UNPKG

1.18 kBJavaScriptView Raw
1
2module.exports = TagList;
3
4function TagList (tagList, latest) {
5 this.latest = latest;
6 this.all = tagList
7}
8
9TagList.parse = function (data, customSort) {
10 var number = function (input) {
11 if (typeof input === 'string') {
12 return parseInt(input.replace(/^\D+/g, ''), 10) || 0;
13 }
14
15 return 0;
16 };
17
18 var tags = data
19 .trim()
20 .split('\n')
21 .map(function (item) { return item.trim(); })
22 .filter(Boolean);
23
24 if (!customSort) {
25 tags.sort(function (tagA, tagB) {
26 var partsA = tagA.split('.');
27 var partsB = tagB.split('.');
28
29 if (partsA.length === 1 || partsB.length === 1) {
30 return tagA - tagB > 0 ? 1 : -1;
31 }
32
33 for (var i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {
34 var a = number(partsA[i]);
35 var b = number(partsB[i]);
36
37 var diff = a - b;
38 if (diff) {
39 return diff > 0 ? 1 : -1;
40 }
41 }
42
43 return 0;
44 });
45 }
46
47 var latest = customSort ? tags[0] : tags.filter(function (tag) { return tag.indexOf('.') >= 0; }).pop();
48
49 return new TagList(tags, latest);
50};