Refine use cases rule examples
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import type { CommunityRuleSection } from "../app/components/type/CommunityRule/CommunityRule.types";
|
||||
import { parsePublishedDocumentForCommunityRuleDisplay } from "./create/publishedDocumentToDisplaySections";
|
||||
import type useCasesCompletedRules from "../messages/en/pages/useCasesCompletedRules.json";
|
||||
import {
|
||||
isUseCaseDetailSlug,
|
||||
useCaseContentKeyForSlug,
|
||||
type UseCaseDetailSlug,
|
||||
} from "./useCaseSyntheticPost";
|
||||
|
||||
export type UseCasesCompletedRulesMessages = typeof useCasesCompletedRules;
|
||||
|
||||
export type UseCaseCompletedRuleFixture =
|
||||
UseCasesCompletedRulesMessages[keyof UseCasesCompletedRulesMessages];
|
||||
|
||||
export function getUseCaseCompletedRuleFixture(
|
||||
slug: UseCaseDetailSlug,
|
||||
completedRules: UseCasesCompletedRulesMessages,
|
||||
): UseCaseCompletedRuleFixture {
|
||||
const contentKey = useCaseContentKeyForSlug(slug);
|
||||
return completedRules[contentKey];
|
||||
}
|
||||
|
||||
export function buildUseCaseCompletedRuleSections(
|
||||
fixture: UseCaseCompletedRuleFixture,
|
||||
): CommunityRuleSection[] {
|
||||
return parsePublishedDocumentForCommunityRuleDisplay(fixture.document);
|
||||
}
|
||||
|
||||
export function resolveUseCaseCompletedRule(
|
||||
slug: string,
|
||||
completedRules: UseCasesCompletedRulesMessages,
|
||||
):
|
||||
| {
|
||||
slug: UseCaseDetailSlug;
|
||||
fixture: UseCaseCompletedRuleFixture;
|
||||
sections: CommunityRuleSection[];
|
||||
}
|
||||
| null {
|
||||
if (!isUseCaseDetailSlug(slug)) {
|
||||
return null;
|
||||
}
|
||||
const fixture = getUseCaseCompletedRuleFixture(slug, completedRules);
|
||||
const sections = buildUseCaseCompletedRuleSections(fixture);
|
||||
if (sections.length === 0) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
slug,
|
||||
fixture,
|
||||
sections,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user