@bokeh/bokehjs
Version:
Interactive, novel data visualization
63 lines • 2.05 kB
JavaScript
import { settings } from "../settings";
export function uuid4() {
// from ipython project
// http://www.ietf.org/rfc/rfc4122.txt
const s = new Array(32);
const hex_digits = "0123456789ABCDEF";
for (let i = 0; i < 32; i++) {
s[i] = hex_digits[Math.floor(Math.random() * 0x10)];
}
s[12] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[16] = hex_digits[(s[16].charCodeAt(0) & 0x3) | 0x8]; // bits 6-7 of the clock_seq_hi_and_reserved to 01
return s.join("");
}
let counter = 1000;
export function unique_id(prefix) {
const id = settings.dev ? `j${counter++}` : uuid4();
if (prefix != null) {
return `${prefix}-${id}`;
}
else {
return id;
}
}
export function escape(s) {
return s.replace(/(?:[&<>"'`])/g, (ch) => {
switch (ch) {
case "&": return "&";
case "<": return "<";
case ">": return ">";
case '"': return """;
case "'": return "'";
case "`": return "`";
default: return ch;
}
});
}
export function unescape(s) {
return s.replace(/&(amp|lt|gt|quot|#x27|#x60);/g, (_, entity) => {
switch (entity) {
case "amp": return "&";
case "lt": return "<";
case "gt": return ">";
case "quot": return '"';
case "#x27": return "'";
case "#x60": return "`";
default: return entity;
}
});
}
export function use_strict(code) {
return `'use strict';\n${code}`;
}
export function to_fixed(val, precision) {
return val.toFixed(precision).replace(/(\.[0-9]*?)0+$/, "$1").replace(/\.$/, "");
}
export function insert_text_on_position(destination, position, text_to_be_inserted) {
const result_text = [];
result_text.push(destination.slice(0, position));
result_text.push(text_to_be_inserted);
result_text.push(destination.slice(position));
return result_text.join("");
}
//# sourceMappingURL=string.js.map