From e82c95293bb2d9db32fc9901f57f1997b74597c1 Mon Sep 17 00:00:00 2001 From: alyssaf16 Date: Tue, 23 Jul 2024 14:06:11 -0400 Subject: labeling work --- src/extensions/ArrayExtensions.ts | 37 +++++++++++++++++++++++++++++++++++++ src/extensions/StringExtensions.ts | 17 +++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/extensions/ArrayExtensions.ts create mode 100644 src/extensions/StringExtensions.ts (limited to 'src/extensions') diff --git a/src/extensions/ArrayExtensions.ts b/src/extensions/ArrayExtensions.ts new file mode 100644 index 000000000..8e125766d --- /dev/null +++ b/src/extensions/ArrayExtensions.ts @@ -0,0 +1,37 @@ +export default class ArrayExtension { + private readonly property: string; + private readonly body: (this: Array) => any; + + constructor(property: string, body: (this: Array) => any) { + this.property = property; + this.body = body; + } + + assign() { + Object.defineProperty(Array.prototype, this.property, { + value: this.body, + enumerable: false + }); + } + +} + +/** + * IMPORTANT: Any extension you add here *must* have a corresponding type definition + * in the Array interface in ./General/ExtensionsTypings.ts. Otherwise, + * Typescript will not recognize your new function. + */ +const extensions = [ + new ArrayExtension("lastElement", function () { + if (!this.length) { + return undefined; + } + return this[this.length - 1]; + }) +]; + +function Assign() { + extensions.forEach(extension => extension.assign()); +} + +export { Assign }; \ No newline at end of file diff --git a/src/extensions/StringExtensions.ts b/src/extensions/StringExtensions.ts new file mode 100644 index 000000000..2c76e56c8 --- /dev/null +++ b/src/extensions/StringExtensions.ts @@ -0,0 +1,17 @@ +function Assign() { + + String.prototype.removeTrailingNewlines = function () { + let sliced = this; + while (sliced.endsWith("\n")) { + sliced = sliced.substring(0, this.length - 1); + } + return sliced as string; + }; + + String.prototype.hasNewline = function () { + return this.endsWith("\n"); + }; + +} + +export { Assign }; \ No newline at end of file -- cgit v1.2.3-70-g09d2