fix(demo): Support lines ending with and starting with semicolon on demo (#214)

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
pull/215/head^2
Jonah Lawrence 1 year ago committed by GitHub
parent 2d9ff23ba7
commit f88ef9ead8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -39,17 +39,33 @@ let preview = {
obj[next.id] = value;
return obj;
}, {});
// add lines to parameters
const lineInputs = Array.from(document.querySelectorAll(".param[data-index]"));
/**
* Merge an array of lines with a given separator
* @param {array<string>} lines The lines to merge
* @param {string} separator The separator to insert between lines
* @returns The merged lines parameter string
*/
const mergeLines = function (lines, separator) {
return lines
.map((el) => el.value) // get values
.filter((val) => val.length) // skip blank entries
.join(separator); // join lines with separator
};
// change separator if it's included in the lines
params.separator = ";";
while (lineInputs.some((el) => el.value.indexOf(params.separator) >= 0)) {
while (mergeLines(lineInputs, "").indexOf(params.separator) >= 0) {
// change last character to next ascii character as long as it's below 127, otherwise add a semicolon
if (params.separator.charCodeAt(params.separator.length - 1) < 127) {
params.separator =
params.separator.slice(0, -1) +
String.fromCharCode(params.separator.charCodeAt(params.separator.length - 1) + 1);
} else {
params.separator += ";";
}
// add lines to parameters
params.lines = lineInputs
.map((el) => el.value) // get values
.filter((val) => val.length) // skip blank entries
.join(params.separator); // join lines with separator
}
params.lines = mergeLines(lineInputs, params.separator);
// function to URI encode string but keep semicolons as ';' and spaces as '+'
const encode = (str) => {
return encodeURIComponent(str).replace(/%3B/g, ";").replace(/%20/g, "+");

Loading…
Cancel
Save