Skip to content

Commit da4bd59

Browse files
committed
fix missing properties
1 parent 455d751 commit da4bd59

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/site.ts

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,8 @@ export function buildSite(builds: Build[], siteConfig: SiteConfig, properties: P
7474

7575
const page = assignIfIncludedSource(assign, topLevelItem, file, siteConfig);
7676

77-
const withContext = Object.assign(topLevelItem, {
78-
__item_context: { page, item: topLevelItem as DocItemWithContext, file, build },
79-
});
77+
const withContext = defineContext(topLevelItem, build, file, page);
78+
defineProperties(withContext, properties);
8079

8180
if (isNewFile && page !== undefined) {
8281
(pages[page] ??= []).push(withContext);
@@ -91,26 +90,32 @@ export function buildSite(builds: Build[], siteConfig: SiteConfig, properties: P
9190
if (!isDocItem(item)) continue;
9291
if (isNewFile && page !== undefined) items.push(item as DocItemWithContext);
9392
const contract = topLevelItem.nodeType === 'ContractDefinition' ? topLevelItem : undefined;
94-
const __item_context: DocItemContext = { page, item: item as DocItemWithContext, contract, file, build };
95-
Object.assign(item, { __item_context });
93+
const withContext = defineContext(item, build, file, page, contract);
94+
defineProperties(withContext, properties);
9695
}
9796
}
9897
}
9998
}
10099

101-
for (const item of items) {
102-
for (const [prop, fn] of Object.entries(properties)) {
103-
const original: unknown = (item as any)[prop];
104-
defineGetterMemoized(item as any, prop, () => fn(item.__item_context, original));
105-
}
106-
}
107-
108100
return {
109101
items,
110102
pages: Object.entries(pages).map(([id, pageItems]) => ({ id, items: pageItems })),
111103
};
112104
}
113105

106+
function defineContext(item: DocItem, build: BuildContext, file: SourceUnit, page?: string, contract?: ContractDefinition): DocItemWithContext {
107+
return Object.assign(item, {
108+
[DOC_ITEM_CONTEXT]: { build, file, contract, page, item: item as DocItemWithContext },
109+
});
110+
}
111+
112+
function defineProperties(item: DocItemWithContext, properties: Properties) {
113+
for (const [prop, fn] of Object.entries(properties)) {
114+
const original: unknown = (item as any)[prop];
115+
defineGetterMemoized(item as any, prop, () => fn(item.__item_context, original));
116+
}
117+
}
118+
114119
function assignIfIncludedSource(
115120
assign: PageAssigner,
116121
item: DocItem,

0 commit comments

Comments
 (0)