38 lines
1 KiB
JavaScript
38 lines
1 KiB
JavaScript
'use strict';
|
|
|
|
var compactField = require('./field_compactor');
|
|
|
|
function stringifyField(arr, min, max) {
|
|
var ranges = compactField(arr);
|
|
if (ranges.length === 1) {
|
|
var singleRange = ranges[0];
|
|
var step = singleRange.step;
|
|
if (step === 1 && singleRange.start === min && singleRange.end === max) {
|
|
return '*';
|
|
}
|
|
if (step !== 1 && singleRange.start === min && singleRange.end === max - step + 1) {
|
|
return '*/' + step;
|
|
}
|
|
}
|
|
var resultArr = [];
|
|
for (var i = 0, l = ranges.length; i < l; ++i) {
|
|
var range = ranges[i];
|
|
if (range.count === 1) {
|
|
resultArr.push(range.start);
|
|
} else {
|
|
var step = range.step;
|
|
if (step === 1) {
|
|
resultArr.push(range.start + '-' + range.end);
|
|
} else {
|
|
if (range.end === max - step + 1) {
|
|
resultArr.push(range.start + '/' + step);
|
|
} else {
|
|
resultArr.push(range.start + '-' + range.end + '/' + step);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return resultArr.join(',');
|
|
}
|
|
|
|
module.exports = stringifyField;
|