summaryrefslogtreecommitdiff
path: root/src/prelude
diff options
context:
space:
mode:
Diffstat (limited to 'src/prelude')
-rw-r--r--src/prelude/README.md3
-rw-r--r--src/prelude/array.ts27
-rw-r--r--src/prelude/math.ts3
-rw-r--r--src/prelude/string.ts11
4 files changed, 44 insertions, 0 deletions
diff --git a/src/prelude/README.md b/src/prelude/README.md
new file mode 100644
index 0000000000..bb728cfb1b
--- /dev/null
+++ b/src/prelude/README.md
@@ -0,0 +1,3 @@
+# Prelude
+このディレクトリのコードはJavaScriptの表現能力を補うためのコードです。
+Misskey固有の処理とは独立したコードの集まりですが、Misskeyのコードを読みやすくすることを目的としています。
diff --git a/src/prelude/array.ts b/src/prelude/array.ts
new file mode 100644
index 0000000000..54f7081712
--- /dev/null
+++ b/src/prelude/array.ts
@@ -0,0 +1,27 @@
+export function countIf<T>(f: (x: T) => boolean, xs: T[]): number {
+ return xs.filter(f).length;
+}
+
+export function count<T>(x: T, xs: T[]): number {
+ return countIf(y => x === y, xs);
+}
+
+export function concat<T>(xss: T[][]): T[] {
+ return ([] as T[]).concat(...xss);
+}
+
+export function intersperse<T>(sep: T, xs: T[]): T[] {
+ return concat(xs.map(x => [sep, x])).slice(1);
+}
+
+export function erase<T>(x: T, xs: T[]): T[] {
+ return xs.filter(y => x !== y);
+}
+
+export function unique<T>(xs: T[]): T[] {
+ return [...new Set(xs)];
+}
+
+export function sum(xs: number[]): number {
+ return xs.reduce((a, b) => a + b, 0);
+}
diff --git a/src/prelude/math.ts b/src/prelude/math.ts
new file mode 100644
index 0000000000..07b94bec30
--- /dev/null
+++ b/src/prelude/math.ts
@@ -0,0 +1,3 @@
+export function gcd(a: number, b: number): number {
+ return b === 0 ? a : gcd(b, a % b);
+}
diff --git a/src/prelude/string.ts b/src/prelude/string.ts
new file mode 100644
index 0000000000..cae776bc3d
--- /dev/null
+++ b/src/prelude/string.ts
@@ -0,0 +1,11 @@
+export function capitalize(s: string): string {
+ return toUpperCase(s.charAt(0)) + toLowerCase(s.slice(1));
+}
+
+export function toUpperCase(s: string): string {
+ return s.toUpperCase();
+}
+
+export function toLowerCase(s: string): string {
+ return s.toLowerCase();
+}