Refine use cases rule examples

This commit is contained in:
adilallo
2026-05-19 22:16:08 -06:00
parent 7c46cbd87b
commit 2f2b5d0dc2
65 changed files with 3129 additions and 252 deletions
+52
View File
@@ -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,
};
}