mirror of
https://github.com/vale981/tridactyl
synced 2025-03-06 01:51:40 -05:00

This commit makes the compiler pass use different classes in order to represent the metadata. This enables adding per-class toString/convert functions. This enables easy type checking and conversion in the `:set` excmd.
33 lines
799 B
TypeScript
33 lines
799 B
TypeScript
import { Type } from "../types/AllTypes"
|
|
import { SymbolMetadata } from "./SymbolMetadata"
|
|
|
|
export class ClassMetadata {
|
|
constructor(
|
|
public members: Map<string, SymbolMetadata> = new Map<
|
|
string,
|
|
SymbolMetadata
|
|
>(),
|
|
) {}
|
|
|
|
setMember(name: string, s: SymbolMetadata) {
|
|
this.members.set(name, s)
|
|
}
|
|
|
|
getMember(name: string) {
|
|
return this.members.get(name)
|
|
}
|
|
|
|
getMembers() {
|
|
return this.members.keys()
|
|
}
|
|
|
|
toConstructor() {
|
|
return (
|
|
`new ClassMetadata(new Map<string, SymbolMetadata>([` +
|
|
Array.from(this.members.entries())
|
|
.map(([n, m]) => `[${JSON.stringify(n)}, ${m.toConstructor()}]`)
|
|
.join(",\n") +
|
|
`]))`
|
|
)
|
|
}
|
|
}
|