diff options
| author | bob <bcz@cs.brown.edu> | 2019-06-21 13:13:18 -0400 |
|---|---|---|
| committer | bob <bcz@cs.brown.edu> | 2019-06-21 13:13:18 -0400 |
| commit | 542501fc3247dafa5879482f62a28147ec4b3793 (patch) | |
| tree | 2c302de41cb1216297d35ec0a37e8f8067f21523 /src/new_fields/Doc.ts | |
| parent | 5483c3353b99e7993f358e3d212b1717bf21fec6 (diff) | |
lots more template stuff.
Diffstat (limited to 'src/new_fields/Doc.ts')
| -rw-r--r-- | src/new_fields/Doc.ts | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts index 9bacf49ba..27b3473f8 100644 --- a/src/new_fields/Doc.ts +++ b/src/new_fields/Doc.ts @@ -166,6 +166,14 @@ export namespace Doc { export function IsPrototype(doc: Doc) { return GetT(doc, "isPrototype", "boolean", true); } + export async function SetInPlace(doc: Doc, key: string, value: Field | undefined, defaultProto: boolean) { + let hasProto = doc.proto instanceof Doc; + let onDeleg = Object.getOwnPropertyNames(doc).indexOf(key) !== -1; + let onProto = Object.getOwnPropertyNames(doc.proto).indexOf(key) !== -1; + if (onDeleg || !hasProto || (!onProto && !defaultProto)) + doc[key] = value; + else doc.proto![key] = value; + } export async function SetOnPrototype(doc: Doc, key: string, value: Field) { const proto = Object.getOwnPropertyNames(doc).indexOf("isPrototype") === -1 ? doc.proto : doc; |
