aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorST-DDT <[email protected]>2023-10-04 18:13:00 +0200
committerGitHub <[email protected]>2023-10-04 18:13:00 +0200
commit5410239245b4a6fe8c1976f8aa33c970923f9f40 (patch)
tree7640a15dfc6781311082a6a7e7a87412d7abcf98 /scripts
parent88b2443cab22ade0488643568896b64adef420b5 (diff)
downloadfaker-5410239245b4a6fe8c1976f8aa33c970923f9f40.tar.xz
faker-5410239245b4a6fe8c1976f8aa33c970923f9f40.zip
feat: support custom randomizer (#2284)
Diffstat (limited to 'scripts')
-rw-r--r--scripts/apidoc/fakerClass.ts46
-rw-r--r--scripts/apidoc/generate.ts3
2 files changed, 30 insertions, 19 deletions
diff --git a/scripts/apidoc/fakerClass.ts b/scripts/apidoc/fakerClass.ts
index d7206cf8..ea190cc7 100644
--- a/scripts/apidoc/fakerClass.ts
+++ b/scripts/apidoc/fakerClass.ts
@@ -21,23 +21,33 @@ export async function processFakerClasses(
return Promise.all(fakerClasses.map(processClass));
}
+export async function processFakerRandomizer(
+ project: ProjectReflection
+): Promise<ModuleSummary> {
+ const randomizerClass = project
+ .getChildrenByKind(ReflectionKind.Interface)
+ .find((clazz) => clazz.name === 'Randomizer');
+
+ return processClass(randomizerClass);
+}
+
async function processClass(
- fakerClass: DeclarationReflection
+ clazz: DeclarationReflection
): Promise<ModuleSummary> {
- const { name } = fakerClass;
- const moduleFieldName = extractModuleFieldName(fakerClass);
+ const { name } = clazz;
+ const moduleFieldName = extractModuleFieldName(clazz);
console.log(`Processing ${name} class`);
- const { comment, deprecated, examples } = analyzeModule(fakerClass);
+ const { comment, deprecated, examples } = analyzeModule(clazz);
const methods: Method[] = [];
- console.debug(`- constructor`);
- methods.push(await processConstructor(fakerClass));
+ if (hasConstructor(clazz)) {
+ console.debug(`- constructor`);
+ methods.push(await processConstructor(clazz));
+ }
- methods.push(
- ...(await processModuleMethods(fakerClass, `${moduleFieldName}.`))
- );
+ methods.push(...(await processModuleMethods(clazz, `${moduleFieldName}.`)));
return writeApiDocsModule(
name,
@@ -49,20 +59,20 @@ async function processClass(
);
}
+function hasConstructor(clazz: DeclarationReflection): boolean {
+ return clazz
+ .getChildrenByKind(ReflectionKind.Constructor)
+ .some((constructor) => constructor.signatures.length > 0);
+}
+
async function processConstructor(
- fakerClass: DeclarationReflection
+ clazz: DeclarationReflection
): Promise<Method> {
- const constructor = fakerClass.getChildrenByKind(
- ReflectionKind.Constructor
- )[0];
+ const constructor = clazz.getChildrenByKind(ReflectionKind.Constructor)[0];
const signature = selectApiSignature(constructor);
- const method = await analyzeSignature(
- signature,
- '',
- `new ${fakerClass.name}`
- );
+ const method = await analyzeSignature(signature, '', `new ${clazz.name}`);
return {
...method,
diff --git a/scripts/apidoc/generate.ts b/scripts/apidoc/generate.ts
index d1fefe8f..f047cc49 100644
--- a/scripts/apidoc/generate.ts
+++ b/scripts/apidoc/generate.ts
@@ -5,7 +5,7 @@ import {
writeApiSearchIndex,
writeSourceBaseUrl,
} from './apiDocsWriter';
-import { processFakerClasses } from './fakerClass';
+import { processFakerClasses, processFakerRandomizer } from './fakerClass';
import { processFakerUtilities } from './fakerUtilities';
import { processModules } from './moduleMethods';
import { loadProject } from './typedoc';
@@ -27,6 +27,7 @@ export async function generate(): Promise<void> {
...(await processModules(project)).sort((a, b) =>
a.text.localeCompare(b.text)
),
+ await processFakerRandomizer(project),
processFakerUtilities(project),
]);
await writeApiPagesIndex(pages.map(({ text, link }) => ({ text, link })));