Commit 954499a4 authored by missionfloyd's avatar missionfloyd
Browse files

Convert (emphasis) to (emphasis:1.1)

per @SirVeggie's suggestion
parent 3562b0dc
Loading
Loading
Loading
Loading
+30 −25
Original line number Diff line number Diff line
@@ -71,16 +71,23 @@ function keyupEditAttention(event) {
        closeCharacter = '>';
        delta = opts.keyedit_precision_extra;
    } else if (selectionStart > 0 && /\(.*\)|\[.*\]/s.test(text.slice(selectionStart - 1, selectionEnd + 1))) {
        closeCharacter = null;
        if (isPlus) {
            text = text.slice(0, selectionStart) + text[selectionStart - 1] + text.slice(selectionStart, selectionEnd) + text[selectionEnd] + text.slice(selectionEnd);
            selectionStart++;
            selectionEnd++;
        let start = text[selectionStart - 1];
        let end = text[selectionEnd];
        let numParen = 0;

        while (text[selectionStart - numParen - 1] == start && text[selectionEnd + numParen] == end) {
            numParen++;
        }

        if (start == "(") {
            weight = 1.1 ** numParen;
        } else {
            text = text.slice(0, selectionStart - 1) + text.slice(selectionStart, selectionEnd) + text.slice(selectionEnd + 1);
            selectionStart--;
            selectionEnd--;
            weight = 0.9 ** numParen;
        }

        text = text.slice(0, selectionStart - numParen) + "(" + text.slice(selectionStart, selectionEnd) + ":" + weight + ")" + text.slice(selectionEnd + numParen);
        selectionStart -= numParen - 1;
        selectionEnd -= numParen - 1;
    } else if (selectionStart == 0 || !/\(.*:-?[\d.]+\)/s.test(text.slice(selectionStart - 1, selectionEnd + text.slice(selectionEnd).indexOf(")") + 1))) {
        // do not include spaces at the end
        while (selectionEnd > selectionStart && text[selectionEnd - 1] == ' ') {
@@ -97,14 +104,13 @@ function keyupEditAttention(event) {
        selectionEnd++;
    }

    if (closeCharacter) {
    var end = text.slice(selectionEnd + 1).indexOf(closeCharacter) + 1;
    var weight = parseFloat(text.slice(selectionEnd + 1, selectionEnd + end));
    if (isNaN(weight)) return;

    weight += isPlus ? delta : -delta;
    weight = parseFloat(weight.toPrecision(12));
        if (String(weight).length == 1) weight += ".0";
    if (Number.isInteger(weight)) weight += ".0";

    if (closeCharacter == ')' && weight == 1) {
        var endParenPos = text.substring(selectionEnd).indexOf(')');
@@ -114,7 +120,6 @@ function keyupEditAttention(event) {
    } else {
        text = text.slice(0, selectionEnd + 1) + weight + text.slice(selectionEnd + end);
    }
    }

    target.focus();
    target.value = text;