Skip to content

Commit 9d2bd6f

Browse files
committed
refactor
1 parent ed7ad4d commit 9d2bd6f

File tree

4 files changed

+42
-38
lines changed

4 files changed

+42
-38
lines changed

dictionary/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ function displayError(source: string, errors: ReadonlyArray<ResultError>) {
6767
for (const error of errors) {
6868
console.error(`%cError%c: ${error.message}`, red, "");
6969
if (error instanceof PositionedError && error.position != null) {
70-
const { position, length } = error.position;
70+
const { position: { position, length } } = error;
7171
const end = position + length;
7272
// the only instance returning -1 is useful
7373
const startLine = source.lastIndexOf("\n", position) + 1;

src/compound.ts

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -183,36 +183,38 @@ export class IterableResult<T> {
183183
return this.flatMap((value) => IterableResult.single(mapper(value)));
184184
}
185185
flatMap<U>(mapper: (value: T) => IterableResult<U>): IterableResult<U> {
186-
const iterable = this.iterable;
187-
return new IterableResult(function* () {
188-
const errors: Array<ResultError> = [];
189-
let yielded = false;
190-
for (const result of iterable()) {
191-
switch (result.type) {
192-
case "value": {
193-
const more = IterableResult.from(() => mapper(result.value));
194-
for (const result of more.iterable()) {
195-
switch (result.type) {
196-
case "value":
197-
yielded = false;
198-
yield result;
199-
break;
200-
case "error":
201-
errors.push(result.error);
186+
return new IterableResult(
187+
function* (this: IterableResult<T>): Generator<Result<U>> {
188+
const errors: Array<ResultError> = [];
189+
let yielded = false;
190+
for (const result of this.iterable()) {
191+
switch (result.type) {
192+
case "value": {
193+
const more = IterableResult.from(() => mapper(result.value));
194+
for (const result of more.iterable()) {
195+
switch (result.type) {
196+
case "value":
197+
yielded = false;
198+
yield result;
199+
break;
200+
case "error":
201+
errors.push(result.error);
202+
}
202203
}
204+
break;
203205
}
204-
break;
206+
case "error":
207+
yield result;
205208
}
206-
case "error":
207-
yield result;
208209
}
209-
}
210-
if (!yielded) {
211-
for (const error of errors) {
212-
yield { type: "error", error };
210+
if (!yielded) {
211+
for (const error of errors) {
212+
yield { type: "error", error };
213+
}
213214
}
214215
}
215-
});
216+
.bind(this),
217+
);
216218
}
217219
filterMap<U>(mapper: (value: T) => U): IterableResult<NonNullable<U>> {
218220
return this.flatMap((value) => {
@@ -225,17 +227,19 @@ export class IterableResult<T> {
225227
});
226228
}
227229
addErrorWhenNone(error: () => ResultError): IterableResult<T> {
228-
const iterable = this.iterable;
229-
return new IterableResult(function* () {
230-
let yielded = false;
231-
for (const result of iterable()) {
232-
yielded = true;
233-
yield result;
234-
}
235-
if (!yielded) {
236-
yield { type: "error", error: error() };
230+
return new IterableResult(
231+
function* (this: IterableResult<T>): Generator<Result<T>> {
232+
let yielded = false;
233+
for (const result of this.iterable()) {
234+
yielded = true;
235+
yield result;
236+
}
237+
if (!yielded) {
238+
yield { type: "error", error: error() };
239+
}
237240
}
238-
});
241+
.bind(this),
242+
);
239243
}
240244
static concat<T>(
241245
...iterableResults: ReadonlyArray<IterableResult<T>>
@@ -282,7 +286,7 @@ export class IterableResult<T> {
282286
for (const rightResult of right.iterable()) {
283287
switch (rightResult.type) {
284288
case "value": {
285-
const right = rightResult.value;
289+
const { value: right } = rightResult;
286290
rightAggregate.push(right);
287291
yielded = true;
288292
yield {

src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ function main() {
269269
while (i < Math.min(INITIAL_PAGE_SIZE * 2 ** size, MAX_PAGE_SIZE)) {
270270
const next = output!.next();
271271
if (!next.done) {
272-
const result = next.value;
272+
const { value: result } = next;
273273
switch (result.type) {
274274
case "value": {
275275
yielded = true;

src/repl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ if (import.meta.main) {
2020
for (const result of iterableResult.iterable()) {
2121
switch (result.type) {
2222
case "value": {
23-
const translation = result.value;
23+
const { value: translation } = result;
2424
const count = translation.match(/<strong>/g)?.length ?? 0;
2525
const text = unescape(
2626
translation.replaceAll(/<\/?strong>/g, "%c"),

0 commit comments

Comments
 (0)