diff --git a/extensions/vercte/dictionaries.js b/extensions/vercte/dictionaries.js index 83cedcd972..b572c09b64 100644 --- a/extensions/vercte/dictionaries.js +++ b/extensions/vercte/dictionaries.js @@ -2,9 +2,166 @@ // ID: verctedictionaries // Description: Use the power of dictionaries in your project. // By: Vercte +, LSPECTRONIZTAR // License: MIT -(function (Scratch) { +/* generated l10n code */ Scratch.translate.setup({ + fi: { + _Dictionaries: "Sanakirjat", + "_change key [KEY] in dictionary [DICT] by [BY]": + "lisää sanakirjan [DICT] avaimeen [KEY] arvo [BY]", + "_key [KEY] from dictionary [DICT]": "sanakirjan [DICT] avain [KEY]", + "_key [KEY] in dictionary [DICT] is defined?": + "onko avain [KEY] määritelty sanakirjassa [DICT]?", + "_key [KEY] in dictionary [DICT] is null?": + "onko sanakirjan [DICT] avaimen [KEY] arvo null?", + "_list of dictionaries": "sanakirjaluettelo", + "_parse JSON [OBJ] into dictionary [DICT]": + "muunna JSON-koodi [OBJ] sanakirjaksi [DICT]", + "_remove dictionary [DICT]": "poista sanakirja [DICT]", + "_remove key [KEY] from dictionary [DICT]": + "poista avain [KEY] sanakirjasta [DICT]", + "_set key [KEY] in dictionary [DICT] to [VAL]": + "aseta sanakirjan [DICT] avain [KEY] arvoon [VAL]", + "_stringify dictionary [DICT] into JSON": "sanakirja [DICT] JSON-muodossa", + "_get dictionary [DICT] as JSON [STRINGIFIED]": + "hanki sanakirja [DICT] JSON-merkkijonona [STRINGIFIED]", + "_set dictionary [DICT] to JSON [OBJ]": + "aseta sanakirja [DICT] JSON:ksi [OBJ]", + _stringified: "merkkijonotettu", + _parsed: "jäsennelty", + }, + it: { + _Dictionaries: "Dizionari", + "_change key [KEY] in dictionary [DICT] by [BY]": + "cambia chiave [KEY] del dizionario [DICT] di [BY]", + "_key [KEY] from dictionary [DICT]": "chiave [KEY] del dizionario [DICT]", + "_key [KEY] in dictionary [DICT] is defined?": + "chiave [KEY] definita in dizionario [DICT]", + "_key [KEY] in dictionary [DICT] is null?": + "chiave [KEY] vuota in dizionario [DICT]", + "_list of dictionaries": "lista dizionari", + "_parse JSON [OBJ] into dictionary [DICT]": + "JSON [OBJ] come dizionario [DICT]", + "_remove dictionary [DICT]": "elimina dizionario [DICT]", + "_remove key [KEY] from dictionary [DICT]": + "rimuovi chiave [KEY] da dizionario [DICT]", + "_set key [KEY] in dictionary [DICT] to [VAL]": + "porta chiave [KEY] del dizionario [DICT] a [VAL]", + "_stringify dictionary [DICT] into JSON": + "contenuto dizionario [DICT] come JSON", + "_get dictionary [DICT] as JSON [STRINGIFIED]": + "ottieni dizionario [DICT] come JSON [STRINGIFIED]", + "_set dictionary [DICT] to JSON [OBJ]": + "imposta dizionario [DICT] con JSON [OBJ]", + _stringified: "in formato JSON", + _parsed: "analizzato", + }, + ja: { + _Dictionaries: "辞書", + "_list of dictionaries": "辞書のリスト", + "_parse JSON [OBJ] into dictionary [DICT]": + "JSON[OBJ]をディクショナリ[DICT]に解析して", + "_stringify dictionary [DICT] into JSON": + "ディクショナリ[DICT]をJSON文字列に変換して", + "_get dictionary [DICT] as JSON [STRINGIFIED]": + "ディクショナリ[DICT]をJSON[STRINGIFIED]として取得", + "_set dictionary [DICT] to JSON [OBJ]": + "ディクショナリ[DICT]をJSON[OBJ]に設定", + _stringified: "文字列化済み", + _parsed: "解析済み", + }, + ko: { + _Dictionaries: "사전", + "_change key [KEY] in dictionary [DICT] by [BY]": + "사전 [DICT]의 키 [KEY]을(를) [BY](으)로 변경하기", + "_key [KEY] from dictionary [DICT]": "사전 [DICT]의 키 [KEY]", + "_key [KEY] in dictionary [DICT] is defined?": + "사전 [DICT]의 키 [KEY]이(가) 정의되었는가?", + "_key [KEY] in dictionary [DICT] is null?": + "사전 [DICT]의 키 [KEY]이(가) null인가?", + "_parse JSON [OBJ] into dictionary [DICT]": + "JSON [OBJ]을 사전 [DICT](으)로 변환", + "_remove dictionary [DICT]": "사전 [DICT]을(를) 제거하기", + "_remove key [KEY] from dictionary [DICT]": + "사전 [DICT]의 키 [KEY]을(를) 제거하기", + "_set key [KEY] in dictionary [DICT] to [VAL]": + "사전 [DICT]의 키 [KEY]을(를) [VAL](으)로 정하기", + "_stringify dictionary [DICT] into JSON": + "사전 [DICT]을(를) JSON으로 문자열화", + "_get dictionary [DICT] as JSON [STRINGIFIED]": + "사전 [DICT]을(를) JSON [STRINGIFIED]로 가져오기", + "_set dictionary [DICT] to JSON [OBJ]": + "사전 [DICT]을(를) JSON [OBJ]로 설정", + _stringified: "문자열화됨", + _parsed: "변환됨", + }, + nb: { + _Dictionaries: "Ordbøker", + "_get dictionary [DICT] as JSON [STRINGIFIED]": + "hent ordbok [DICT] som JSON [STRINGIFIED]", + "_set dictionary [DICT] to JSON [OBJ]": "sett ordbok [DICT] til JSON [OBJ]", + _stringified: "strenggjort", + _parsed: "parset", + }, + nl: { + _Dictionaries: "JSON-woordenboeken", + "_get dictionary [DICT] as JSON [STRINGIFIED]": + "haal woordenboek [DICT] op als JSON [STRINGIFIED]", + "_set dictionary [DICT] to JSON [OBJ]": + "stel woordenboek [DICT] in op JSON [OBJ]", + _stringified: "als JSON-string", + _parsed: "geparseerd", + }, + ru: { + _Dictionaries: "Словари", + "_change key [KEY] in dictionary [DICT] by [BY]": + "изменить ключ [KEY] в словаре [DICT] на [BY]", + "_key [KEY] from dictionary [DICT]": "ключ [KEY] из словаря [DICT]", + "_key [KEY] in dictionary [DICT] is defined?": + "ключ [KEY] в словаре [DICT] найден?", + "_key [KEY] in dictionary [DICT] is null?": + "ключ [KEY] в словаре [DICT] нулевой?", + "_list of dictionaries": "список словарей", + "_parse JSON [OBJ] into dictionary [DICT]": + "преобразовать JSON [OBJ] в словарь [DICT]", + "_remove dictionary [DICT]": "удалить словарь [DICT]", + "_remove key [KEY] from dictionary [DICT]": + "удалить ключ [KEY] из словаря [DICT]", + "_set key [KEY] in dictionary [DICT] to [VAL]": + "задать ключ [KEY] в словаре [DICT] значение [VAL]", + "_stringify dictionary [DICT] into JSON": + "преобразовать словарь [DICT] в JSON", + "_get dictionary [DICT] as JSON [STRINGIFIED]": + "получить словарь [DICT] как JSON [STRINGIFIED]", + "_set dictionary [DICT] to JSON [OBJ]": + "установить словарь [DICT] в JSON [OBJ]", + _stringified: "в виде строки", + _parsed: "разобранный", + }, + "zh-cn": { + _Dictionaries: "字典", + "_change key [KEY] in dictionary [DICT] by [BY]": + "将字典[DICT]中的键[KEY]增加[BY]", + "_key [KEY] from dictionary [DICT]": "字典[DICT]的键[KEY]", + "_key [KEY] in dictionary [DICT] is defined?": "字典[DICT]定义了键[KEY]?", + "_key [KEY] in dictionary [DICT] is null?": + "字典[DICT]中的键[KEY]是null吗?", + "_list of dictionaries": "已有字典", + "_parse JSON [OBJ] into dictionary [DICT]": "解析JSON[OBJ]到字典[DICT]", + "_remove dictionary [DICT]": "删除字典[DICT]", + "_remove key [KEY] from dictionary [DICT]": "从字典[DICT]删除键[KEY]", + "_set key [KEY] in dictionary [DICT] to [VAL]": + "将字典[DICT]中的键[KEY]设为[VAL]", + "_stringify dictionary [DICT] into JSON": "将字典[DICT]转为JSON字符串", + "_get dictionary [DICT] as JSON [STRINGIFIED]": + "将字典[DICT]获取为JSON字符串 [STRINGIFIED]", + "_set dictionary [DICT] to JSON [OBJ]": "将字典[DICT]设置为JSON [OBJ]", + _stringified: "已转为字符串", + _parsed: "已解析", + }, +}); +/* end generated l10n code */ (function (Scratch) { "use strict"; let dictionaries = new Map(); @@ -29,6 +186,7 @@ { opcode: "dict_stringify", blockType: Scratch.BlockType.REPORTER, + hideFromPalette: true, text: Scratch.translate("stringify dictionary [DICT] into JSON"), arguments: { DICT: { @@ -37,10 +195,27 @@ }, }, }, + { + opcode: "dict_stringify_better", + blockType: Scratch.BlockType.REPORTER, + text: Scratch.translate( + "get dictionary [DICT] as JSON [STRINGIFIED]" + ), + arguments: { + DICT: { + type: Scratch.ArgumentType.STRING, + defaultValue: "foo", + }, + STRINGIFIED: { + type: Scratch.ArgumentType.STRING, + menu: "stringify", + }, + }, + }, { opcode: "dict_parse", blockType: Scratch.BlockType.COMMAND, - text: Scratch.translate("parse JSON [OBJ] into dictionary [DICT]"), + text: Scratch.translate("set dictionary [DICT] to JSON [OBJ]"), arguments: { OBJ: { type: Scratch.ArgumentType.STRING, @@ -132,6 +307,12 @@ }, }, ], + menus: { + stringify: { + acceptReporters: true, + items: ["stringified", "parsed"], + }, + }, }; } @@ -147,13 +328,26 @@ }, {}); }; if (!dictionaries.get(DICT)) return "{}"; - return JSON.stringify(mapToObj(dictionaries.get(DICT))); + const rObj = mapToObj(dictionaries.get(DICT)); + return JSON.stringify(rObj); + } + + dict_stringify_better({ DICT, STRINGIFIED }) { + const mapToObj = (m) => { + return Array.from(m).reduce((obj, [key, value]) => { + obj[key] = value; + return obj; + }, {}); + }; + if (!dictionaries.get(DICT)) return "{}"; + const rObj = mapToObj(dictionaries.get(DICT)); + return STRINGIFIED == "stringified" ? JSON.stringify(rObj) : rObj; } dict_parse({ OBJ, DICT }) { let dict = null; try { - dict = JSON.parse(OBJ); + dict = typeof OBJ === "object" ? OBJ : JSON.parse(OBJ); } catch (e) { dict = { error: String(e) }; }