diff --git a/extensions/text.js b/extensions/text.js index e03c7705a9..7d94080832 100644 --- a/extensions/text.js +++ b/extensions/text.js @@ -1,7 +1,8 @@ // Name: Text // ID: strings // Description: Manipulate characters and text. -// Original: CST1229 +// By: CST1229 +// By: BludIsAnLemon // License: MIT AND MPL-2.0 (function (Scratch) { @@ -74,7 +75,7 @@ opcode: "letters_of", blockType: Scratch.BlockType.REPORTER, text: Scratch.translate( - "letters [LETTER1] to [LETTER2] of [STRING]" + "letters [LETTER1] to [LETTER2] of [STRING]", ), arguments: { LETTER1: { @@ -154,7 +155,7 @@ opcode: "replace", blockType: Scratch.BlockType.REPORTER, text: Scratch.translate( - "replace [SUBSTRING] in [STRING] with [REPLACE]" + "replace [SUBSTRING] in [STRING] with [REPLACE]", ), arguments: { SUBSTRING: { @@ -217,7 +218,7 @@ opcode: "replaceRegex", blockType: Scratch.BlockType.REPORTER, text: Scratch.translate( - "replace regex /[REGEX]/[FLAGS] in [STRING] with [REPLACE]" + "replace regex /[REGEX]/[FLAGS] in [STRING] with [REPLACE]", ), arguments: { REGEX: { @@ -372,12 +373,79 @@ }, }, }, + + "---", + + { + opcode: "endsAt", + blockType: Scratch.BlockType.BOOLEAN, + text: Scratch.translate("[STRING] ends with [SUBSTRING]?"), + arguments: { + STRING: { + type: Scratch.ArgumentType.STRING, + defaultValue: "apple", + }, + SUBSTRING: { + type: Scratch.ArgumentType.STRING, + defaultValue: "banana", + }, + }, + }, + + "---", + + { + opcode: "backwards", + blockType: Scratch.BlockType.REPORTER, + text: Scratch.translate("[STRING] backwards"), + arguments: { + STRING: { + type: Scratch.ArgumentType.STRING, + defaultValue: "apple", + }, + }, + }, + + "---", + + { + opcode: "trim", + blockType: Scratch.BlockType.REPORTER, + text: Scratch.translate("trim [STRING] at [METHOD]"), + arguments: { + STRING: { + type: Scratch.ArgumentType.STRING, + defaultValue: " apple ", + }, + METHOD: { + type: Scratch.ArgumentType.STRING, + menu: "trimMethod", + }, + }, + }, ], menus: { textCase: { acceptReporters: true, items: this._initCaseMenu(), }, + trimMethod: { + acceptReporters: true, + items: [ + { + text: Scratch.translate("both sides"), + value: "both", + }, + { + text: Scratch.translate("the end"), + value: "front", + }, + { + text: Scratch.translate("the start"), + value: "back", + }, + ], + }, }, }; } @@ -440,7 +508,7 @@ STRING: args.STRING, ITEM: 0, }, - util + util, ); return splitCache.arr.length - 1 || 0; } @@ -485,7 +553,7 @@ return args.STRING.replace( new RegExp(args.REGEX, args.FLAGS), - args.REPLACE + args.REPLACE, ); } catch (e) { console.error(e); @@ -590,7 +658,7 @@ case CaseParam.MIXEDCASE: return Array.from(string) .map((char, index) => - index % 2 === 0 ? char.toUpperCase() : char.toLowerCase() + index % 2 === 0 ? char.toUpperCase() : char.toLowerCase(), ) .join(""); case CaseParam.TITLECASE: @@ -613,6 +681,28 @@ return string; } } + endsAt(args) { + let STRING = args.STRING; + return STRING.endsWith(args.SUBSTRING); + } + backwards(args) { + let backwardsText = Array.from(args.STRING); + backwardsText.reverse(); + return backwardsText.join(""); + } + trim(args) { + let method = args.METHOD; + let STRING = args.STRING; + if (method == "both") { + return STRING.trim(); + } else if (method == "front") { + return STRING.trimEnd(); + } else if (method == "back") { + return STRING.trimStart(); + } else { + return "Please select a valid method!"; + } + } } Scratch.extensions.register(new StringsExt());