From 727bc632e1fb299480a753827a15d4d633b63212 Mon Sep 17 00:00:00 2001 From: nsantacruz Date: Wed, 21 Jan 2026 11:34:17 +0200 Subject: [PATCH 1/2] chore(linker): fix tabbing --- static/js/sefaria/sefaria.js | 44 ++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/static/js/sefaria/sefaria.js b/static/js/sefaria/sefaria.js index 382a135f93..f9a7092280 100644 --- a/static/js/sefaria/sefaria.js +++ b/static/js/sefaria/sefaria.js @@ -663,29 +663,29 @@ Sefaria = extend(Sefaria, { } return output; }, - _getLinkerTestString({text, inputRefParts, inputRefPartTypes}) { - /** - * Outputs a test string that can be pasted into linker_test.py to test the same input. - */ + _getLinkerTestString({text, inputRefParts, inputRefPartTypes}) { + /** + * Outputs a test string that can be pasted into linker_test.py to test the same input. + */ const partTypeSymbolMap = {"NAMED": "@", "NUMBERED": "#", "DH": "*", "RANGE_SYMBOL": "^", "IBID": "&", "RELATIVE": "<"} - let testStr = "crrd(["; - for (let i = 0; i < inputRefParts.length; i++) { - const part = inputRefParts[i]; - const type = inputRefPartTypes[i]; - const symbol = partTypeSymbolMap[type] || "?"; - testStr += `"${symbol}${part.replace('"', '\\"')}"`; - if (i < inputRefParts.length - 1) { - testStr += ", "; - } - } - testStr += "]"; - if (Sefaria.hebrew.isHebrew(text)) { - testStr += ")"; - } else { - testStr += ", lang='en')"; - } - return testStr; - }, + let testStr = "crrd(["; + for (let i = 0; i < inputRefParts.length; i++) { + const part = inputRefParts[i]; + const type = inputRefPartTypes[i]; + const symbol = partTypeSymbolMap[type] || "?"; + testStr += `"${symbol}${part.replace('"', '\\"')}"`; + if (i < inputRefParts.length - 1) { + testStr += ", "; + } + } + testStr += "]"; + if (Sefaria.hebrew.isHebrew(text)) { + testStr += ")"; + } else { + testStr += ", lang='en')"; + } + return testStr; + }, getAllTranslationsWithText: async function(ref) { let returnObj = await Sefaria.getTextsFromAPIV3(ref, [{languageFamilyName: 'translation', versionTitle: 'all'}], false); return Sefaria._sortVersionsIntoBuckets(returnObj.versions); From b1b0f3d5d2b3d7a0ca2c30ad48ee27269e02bf94 Mon Sep 17 00:00:00 2001 From: nsantacruz Date: Wed, 21 Jan 2026 12:28:03 +0200 Subject: [PATCH 2/2] fix(linker): fix creating test string for ranged refs --- static/js/sefaria/sefaria.js | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/static/js/sefaria/sefaria.js b/static/js/sefaria/sefaria.js index f9a7092280..de185d2a62 100644 --- a/static/js/sefaria/sefaria.js +++ b/static/js/sefaria/sefaria.js @@ -663,21 +663,12 @@ Sefaria = extend(Sefaria, { } return output; }, - _getLinkerTestString({text, inputRefParts, inputRefPartTypes}) { + _getLinkerTestString({text, inputRefParts, inputRefPartTypes, inputRangeSections, inputRangeToSections}) { /** * Outputs a test string that can be pasted into linker_test.py to test the same input. */ - const partTypeSymbolMap = {"NAMED": "@", "NUMBERED": "#", "DH": "*", "RANGE_SYMBOL": "^", "IBID": "&", "RELATIVE": "<"} let testStr = "crrd(["; - for (let i = 0; i < inputRefParts.length; i++) { - const part = inputRefParts[i]; - const type = inputRefPartTypes[i]; - const symbol = partTypeSymbolMap[type] || "?"; - testStr += `"${symbol}${part.replace('"', '\\"')}"`; - if (i < inputRefParts.length - 1) { - testStr += ", "; - } - } + testStr += Sefaria._getLinkerTestStringForParts(inputRefParts, inputRefPartTypes, inputRangeSections, inputRangeToSections); testStr += "]"; if (Sefaria.hebrew.isHebrew(text)) { testStr += ")"; @@ -686,6 +677,28 @@ Sefaria = extend(Sefaria, { } return testStr; }, + _getLinkerTestStringForParts(refParts, refPartTypes, rangeSections, rangeToSections) { + const partTypeSymbolMap = {"NAMED": "@", "NUMBERED": "#", "DH": "*", "RANGE_SYMBOL": "^", "IBID": "&", "RELATIVE": "<"} + let testStr = ""; + for (let i = 0; i < refParts.length; i++) { + const part = refParts[i]; + const type = refPartTypes[i]; + if (type === "RANGE" && rangeSections && rangeToSections) { + testStr += Sefaria._getLinkerTestStringForParts(rangeSections, Array(rangeSections.length).fill("NUMBERED")); + testStr += ", "; + testStr += Sefaria._getLinkerTestStringForParts(["-"], ["RANGE_SYMBOL"]); + testStr += ", "; + testStr += Sefaria._getLinkerTestStringForParts(rangeToSections, Array(rangeToSections.length).fill("NUMBERED")); + } else { + const symbol = partTypeSymbolMap[type] || "?"; + testStr += `"${symbol}${part.replace('"', '\\"')}"`; + } + if (i < refParts.length - 1) { + testStr += ", "; + } + } + return testStr; + }, getAllTranslationsWithText: async function(ref) { let returnObj = await Sefaria.getTextsFromAPIV3(ref, [{languageFamilyName: 'translation', versionTitle: 'all'}], false); return Sefaria._sortVersionsIntoBuckets(returnObj.versions);