correct default implementation of MapAccess.entries; add length params to Serializer object methods
This commit is contained in:
parent
8d063d4868
commit
7745d3ae4c
3 changed files with 19 additions and 14 deletions
|
@ -33,9 +33,9 @@ interface ISerializer<T> {
|
||||||
serializeString(value: string): T
|
serializeString(value: string): T
|
||||||
serializeSymbol(value: symbol): T
|
serializeSymbol(value: symbol): T
|
||||||
serializeNull(): T
|
serializeNull(): T
|
||||||
serializeObject(): ISerializeObject<T>
|
serializeIterable(len?: number): ISerializeIterable<T>
|
||||||
serializeIterable(): ISerializeIterable<T>
|
serializeObject(len?: number): ISerializeObject<T>
|
||||||
serializeClass(name: string): ISerializeObject<T>
|
serializeClass(name: string, len?: number): ISerializeObject<T>
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,10 @@ export abstract class MapAccess {
|
||||||
abstract nextKeySeed<T, K extends Deserialize<T>>(seed: K): IteratorResult<T>
|
abstract nextKeySeed<T, K extends Deserialize<T>>(seed: K): IteratorResult<T>
|
||||||
abstract nextValueSeed<T, V extends Deserialize<T>>(seed: V): IteratorResult<T>
|
abstract nextValueSeed<T, V extends Deserialize<T>>(seed: V): IteratorResult<T>
|
||||||
|
|
||||||
|
private orDefaultSeed<T>(seed?: Deserialize<T>): Deserialize<T> {
|
||||||
|
return seed || GenericSeed.deserialize
|
||||||
|
}
|
||||||
|
|
||||||
nextEntrySeed<TK, TV, K extends Deserialize<TK>, V extends Deserialize<TV>>(kseed: K, vseed: V): IteratorResult<[TK, TV]> {
|
nextEntrySeed<TK, TV, K extends Deserialize<TK>, V extends Deserialize<TV>>(kseed: K, vseed: V): IteratorResult<[TK, TV]> {
|
||||||
const key = this.nextKeySeed(kseed) as IteratorResult<TK>
|
const key = this.nextKeySeed(kseed) as IteratorResult<TK>
|
||||||
|
|
||||||
|
@ -81,9 +85,9 @@ export abstract class MapAccess {
|
||||||
|
|
||||||
entries<TK, TV, K extends Deserialize<TK>, V extends Deserialize<TV>>(kseed?: K, vseed?: V): Iterator<[TK, TV]> {
|
entries<TK, TV, K extends Deserialize<TK>, V extends Deserialize<TV>>(kseed?: K, vseed?: V): Iterator<[TK, TV]> {
|
||||||
return this.generate(
|
return this.generate(
|
||||||
kseed == null || vseed == null ?
|
kseed == null && vseed == null ?
|
||||||
this.nextEntry.bind(this) :
|
this.nextEntry.bind(this) :
|
||||||
this.nextEntrySeed.bind(this, kseed, vseed) as any
|
this.nextEntrySeed.bind(this, this.orDefaultSeed(kseed), this.orDefaultSeed(vseed)) as any
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,6 +131,7 @@ const VisitorMethods = Object.freeze([
|
||||||
export function isVisitor<T>(visitor: any): visitor is IVisitor<T> {
|
export function isVisitor<T>(visitor: any): visitor is IVisitor<T> {
|
||||||
return VisitorMethods.every(method => method in visitor)
|
return VisitorMethods.every(method => method in visitor)
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IVisitor<T> {
|
export interface IVisitor<T> {
|
||||||
visitBoolean(value: boolean): T
|
visitBoolean(value: boolean): T
|
||||||
visitNumber(value: number): T
|
visitNumber(value: number): T
|
||||||
|
|
|
@ -34,16 +34,12 @@ export interface ISerializer<T> {
|
||||||
serializeString(value: string): T
|
serializeString(value: string): T
|
||||||
serializeSymbol(value: symbol): T
|
serializeSymbol(value: symbol): T
|
||||||
serializeNull(): T
|
serializeNull(): T
|
||||||
serializeObject(): ISerializeObject<T>
|
serializeIterable(len?: number): ISerializeIterable<T>
|
||||||
serializeIterable(): ISerializeIterable<T>
|
serializeObject(len?: number): ISerializeObject<T>
|
||||||
serializeClass(name: string): ISerializeObject<T>
|
serializeClass(name: string, len?: number): ISerializeObject<T>
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Serializer<T> implements ISerializer<T> {
|
export class Serializer<T> implements ISerializer<T> {
|
||||||
serializeIterable(): ISerializeIterable<T> {
|
|
||||||
throw new Error("Method not implemented.")
|
|
||||||
}
|
|
||||||
|
|
||||||
serializeAny(_value: any): T {
|
serializeAny(_value: any): T {
|
||||||
throw new Error("Method not implemented.")
|
throw new Error("Method not implemented.")
|
||||||
}
|
}
|
||||||
|
@ -72,11 +68,15 @@ export class Serializer<T> implements ISerializer<T> {
|
||||||
throw new Error('Method not implemented.')
|
throw new Error('Method not implemented.')
|
||||||
}
|
}
|
||||||
|
|
||||||
serializeObject(): ISerializeObject<T> {
|
serializeIterable(_len: number): ISerializeIterable<T> {
|
||||||
|
throw new Error("Method not implemented.")
|
||||||
|
}
|
||||||
|
|
||||||
|
serializeObject(_len: number): ISerializeObject<T> {
|
||||||
throw new Error('Method not implemented.')
|
throw new Error('Method not implemented.')
|
||||||
}
|
}
|
||||||
|
|
||||||
serializeClass(_name: string): ISerializeObject<T> {
|
serializeClass(_name: string, _len: number): ISerializeObject<T> {
|
||||||
throw new Error('Method not implemented.')
|
throw new Error('Method not implemented.')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue