diff options
Diffstat (limited to 'src/prelude')
| -rw-r--r-- | src/prelude/README.md | 3 | ||||
| -rw-r--r-- | src/prelude/array.ts | 27 | ||||
| -rw-r--r-- | src/prelude/math.ts | 3 | ||||
| -rw-r--r-- | src/prelude/string.ts | 11 |
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(); +} |