1
0

refactor modules into namespaces

This commit is contained in:
2024-05-09 18:11:50 +02:00
parent ab11074744
commit fccebc61b6
5 changed files with 336 additions and 332 deletions

View File

@@ -1,4 +1,4 @@
import { join } from "./collector.js"; import { Collector } from "./collector.js";
import { Enumerable } from "./sync.js"; import { Enumerable } from "./sync.js";
import { asArray, isDefined } from "./utils.js"; import { asArray, isDefined } from "./utils.js";
@@ -255,7 +255,7 @@ class BitArrayImpl implements BitArray {
} }
public toString() { public toString() {
return Enumerable.sequence(this).select(bit => bit ? '1' : '0').collect(join()); return Enumerable.sequence(this).select(bit => bit ? '1' : '0').collect(Collector.join());
} }
} }
@@ -497,7 +497,7 @@ class BitArraySlice implements BitArray {
} }
public toString() { public toString() {
return Enumerable.sequence(this).select(bit => bit ? '1' : '0').collect(join()); return Enumerable.sequence(this).select(bit => bit ? '1' : '0').collect(Collector.join());
} }
} }

View File

@@ -6,6 +6,7 @@ export interface Collector<TElement, TAccumulator, TResult> {
finalize(accumulator: TAccumulator): TResult; finalize(accumulator: TAccumulator): TResult;
} }
export namespace Collector {
class SimpleCollector<TElement, TAccumulator, TResult> implements Collector<TElement, TAccumulator, TResult> { class SimpleCollector<TElement, TAccumulator, TResult> implements Collector<TElement, TAccumulator, TResult> {
readonly #initialize: () => TAccumulator; readonly #initialize: () => TAccumulator;
readonly #accumulate: (accumulator: TAccumulator, element: TElement) => void; readonly #accumulate: (accumulator: TAccumulator, element: TElement) => void;
@@ -243,3 +244,4 @@ const bigintAverageCollector = new BigIntAverageCollector();
export function bigintAverage(): Collector<bigint, any, bigint> { export function bigintAverage(): Collector<bigint, any, bigint> {
return bigintAverageCollector; return bigintAverageCollector;
} }
}

View File

@@ -1,4 +1,4 @@
export * from "./sync.js"; export * from "./sync.js";
export * from "./async.js"; export * from "./async.js";
export * as collectors from "./collector.js"; export * from "./collector.js";
export * as random from "./random.js"; export * from "./random.js";

View File

@@ -11,6 +11,7 @@ export interface RandomOptions<T = any> {
random?: RandomGenerator; random?: RandomGenerator;
}; };
export namespace Random {
export const alwaysTrue: ElementPredicate = () => true; export const alwaysTrue: ElementPredicate = () => true;
export const weightOfOne: ElementWeight = () => 1.0; export const weightOfOne: ElementWeight = () => 1.0;
export const mathRandom: RandomGenerator = () => Math.random(); export const mathRandom: RandomGenerator = () => Math.random();
@@ -132,3 +133,4 @@ export class RandomPicker<T> {
return result.element; return result.element;
} }
} }
}

View File

@@ -1,6 +1,6 @@
import { createEqualitySet } from "./equality-set.js"; import { createEqualitySet } from "./equality-set.js";
import { createEqualityMap } from "./equality-map.js"; import { createEqualityMap } from "./equality-map.js";
import { RandomGenerator, RandomOptions, getRandomElement, mathRandom } from "./random.js"; import { RandomGenerator, RandomOptions, Random } from "./random.js";
import { createQueue } from "./queue.js"; import { createQueue } from "./queue.js";
import { Collector } from "./collector.js"; import { Collector } from "./collector.js";
import { combineComparers, defaultArrayComparer, identity, operatorCompare, reverseComparer, strictEquals, wrapAsIterable } from "./utils.js"; import { combineComparers, defaultArrayComparer, identity, operatorCompare, reverseComparer, strictEquals, wrapAsIterable } from "./utils.js";
@@ -279,7 +279,7 @@ export namespace Enumerable {
} }
export function randomSequence(random?: RandomGenerator): Enumerable<number> { export function randomSequence(random?: RandomGenerator): Enumerable<number> {
return new FunctionEnumerable(random ?? mathRandom); return new FunctionEnumerable(random ?? Random.mathRandom);
} }
export function concat<T>(...enumerables: Enumerable<T>[]): Enumerable<T> { export function concat<T>(...enumerables: Enumerable<T>[]): Enumerable<T> {
@@ -899,7 +899,7 @@ export abstract class BaseEnumerable<TElement> extends EnumerableMarker implemen
} }
random(options?: RandomOptions<TElement>) { random(options?: RandomOptions<TElement>) {
return getRandomElement(this, options).element; return Random.getRandomElement(this, options).element;
} }
cached(): Enumerable<TElement> { cached(): Enumerable<TElement> {