65 lines
1.5 KiB
JavaScript
65 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
var sprintf = require('sprintf-js').sprintf;
|
|
|
|
/**
|
|
* @returns {String} the string with all zeroes contained in a <span>
|
|
*/
|
|
var spanAllZeroes = exports.spanAllZeroes = function (s) {
|
|
return s.replace(/(0+)/g, '<span class="zero">$1</span>');
|
|
};
|
|
|
|
/**
|
|
* @returns {String} the string with each character contained in a <span>
|
|
*/
|
|
exports.spanAll = function (s, optionalOffset) {
|
|
if (optionalOffset === undefined) {
|
|
optionalOffset = 0;
|
|
}
|
|
|
|
var letters = s.split('');
|
|
|
|
return letters.map(function (n, i) {
|
|
return sprintf('<span class="digit value-%s position-%d">%s</span>', n,
|
|
i + optionalOffset,
|
|
spanAllZeroes(n)); // XXX Use #base-2 .value-0 instead?
|
|
}).join('');
|
|
};
|
|
|
|
function spanLeadingZeroesSimple(group) {
|
|
return group.replace(/^(0+)/, '<span class="zero">$1</span>');
|
|
}
|
|
|
|
/**
|
|
* @returns {String} the string with leading zeroes contained in a <span>
|
|
*/
|
|
exports.spanLeadingZeroes = function (address) {
|
|
var groups = address.split(':');
|
|
|
|
return groups.map(function (g) {
|
|
return spanLeadingZeroesSimple(g);
|
|
}).join(':');
|
|
};
|
|
|
|
/**
|
|
* Groups an address
|
|
* @returns {String} a grouped address
|
|
*/
|
|
exports.simpleGroup = function (addressString, offset) {
|
|
var groups = addressString.split(':');
|
|
|
|
if (!offset) {
|
|
offset = 0;
|
|
}
|
|
|
|
return groups.map(function (g, i) {
|
|
if (/group-v4/.test(g)) {
|
|
return g;
|
|
}
|
|
|
|
return sprintf('<span class="hover-group group-%d">%s</span>',
|
|
i + offset,
|
|
spanLeadingZeroesSimple(g));
|
|
}).join(':');
|
|
};
|