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());