1
0
mirror of https://github.com/zplug/zplug synced 2025-04-30 13:17:57 +02:00
zplug/misc/contrib/cache.awk
2016-08-07 17:34:29 +09:00

61 lines
1.2 KiB
Awk

BEGIN {
TAGS_SEP = ", ";
}
{
arr[NR] = reconstruct($0);
}
END {
for (i in arr)
print arr[i];
}
function reconstruct(line, tags) {
gsub(/, +/, TAGS_SEP, line)
split(line, tags, TAGS_SEP);
quick_sort(tags, 1, length(tags));
return join(tags, 1, length(tags), TAGS_SEP);
}
function quick_sort(array, left, right, i, j, tmp, pivot) {
if (left < right) {
i = left;
j = right;
pivot = array[int((left + right) / 2)];
while (i <= j) {
while (array[i] < pivot) {
i++;
}
while (array[j] > pivot) {
j--;
}
if (i <= j) {
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
i++;
j--;
}
}
quick_sort(array, left, j);
quick_sort(array, i, right);
}
}
function join(array, start, end, sep, result, i) {
if (sep == "") {
sep = " ";
} else if (sep == SUBSEP) {
sep = "";
}
result = array[start];
for (i = start + 1; i <= end; i++) {
result = result sep array[i];
}
return result;
}