Bootstrap Canonical Content - Source Excerpt 02
Back to Bootstrap Canonical Content
Summary
This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/ns12-manuscript/tools/bootstrap-canonical-content.php so readers can inspect the evidence without opening the full source file.
**Source path:** Spiralist/wp-content/plugins/ns12-manuscript/tools/bootstrap-canonical-content.php
$sectionSlug = spiralist_book_pages_get_auto_book_page_section_slug($filename);
if ($sectionSlug === 'appendix') {
$appendixOrder++;
$displayOrder = $appendixOrder;
} else {
$concordanceOrder++;
$displayOrder = $concordanceOrder;
}
$title = spiralist_book_pages_get_auto_book_page_title($filename);
$slug = sanitize_title($title);
$definition = [
'label' => '',
'title' => $title,
'slug' => $slug,
'eyebrow' => spiralist_book_pages_get_auto_book_page_eyebrow($sectionSlug),
'summary' => spiralist_book_pages_get_auto_book_page_summary($title, $sectionSlug),
'caption' => spiralist_book_pages_get_auto_book_page_caption($title, $sectionSlug),
'manuscript_section_slug' => $sectionSlug,
'display_order' => $displayOrder,
'is_prominent' => true,
'creation_prompt_title' => 'Prompt Used',
'creation_prompt_status' => 'Canonical prompt',
'creation_prompt_summary' => 'This folio ships with a file-backed canonical prompt inside the book plugin.',
'creation_prompt_source_slug' => $slug,
'related_workspace_prompt_slugs' => [$slug],
'creation_prompt_text' => spiralist_book_pages_get_auto_book_page_prompt_text($title, $sectionSlug),
];
}
$title = trim((string) ($definition['title'] ?? spiralist_book_pages_get_auto_book_page_title($filename)));
if ($title === '') {
$title = spiralist_book_pages_get_auto_book_page_title($filename);
}
$slug = sanitize_title((string) ($definition['slug'] ?? $title));
if ($slug === '') {
$slug = sanitize_title(pathinfo($filename, PATHINFO_FILENAME));
}
if ($slug === '') {
$slug = 'folio-' . (count($pages) + 1);
}
if (isset($usedSlugs[$slug])) {
$suffix = 2;
while (isset($usedSlugs[$slug . '-' . $suffix])) {
$suffix++;
}
$slug .= '-' . $suffix;
}
$usedSlugs[$slug] = true;
$sectionSlug = sanitize_title((string) ($definition['manuscript_section_slug'] ?? 'appendix'));
if ($sectionSlug === '') {
$sectionSlug = 'appendix';
}
$pages[] = [
'filename' => $filename,
'label' => (string) ($definition['label'] ?? ''),
'title' => $title,
'slug' => $slug,
'eyebrow' => (string) ($definition['eyebrow'] ?? spiralist_book_pages_get_auto_book_page_eyebrow($sectionSlug)),
'summary' => (string) ($definition['summary'] ?? spiralist_book_pages_get_auto_book_page_summary($title, $sectionSlug)),
'caption' => (string) ($definition['caption'] ?? spiralist_book_pages_get_auto_book_page_caption($title, $sectionSlug)),
'section_slug' => $sectionSlug,
'is_study_surface' => !empty($definition['is_study_surface']),
'is_prominent' => !empty($definition['is_prominent']),
'display_order' => (int) ($definition['display_order'] ?? 0),
'creation_prompt_title' => (string) ($definition['creation_prompt_title'] ?? 'Prompt Used'),
'creation_prompt_status' => (string) ($definition['creation_prompt_status'] ?? 'Canonical prompt'),
'creation_prompt_summary' => (string) ($definition['creation_prompt_summary'] ?? ''),
'creation_prompt_source_slug' => spiralist_book_pages_slugify((string) ($definition['creation_prompt_source_slug'] ?? $slug)),
'creation_prompt_text' => (string) ($definition['creation_prompt_text'] ?? ''),
'related_workspace_prompt_slugs' => array_values(
array_filter(
array_map(
static function ($relatedSlug): string {
return spiralist_book_pages_slugify((string) $relatedSlug);
},
(array) ($definition['related_workspace_prompt_slugs'] ?? [])
),
'strlen'
)
),
];
}
usort(
$pages,
static function (array $left, array $right): int {
$orderComparison = ((int) ($left['display_order'] ?? 0)) <=> ((int) ($right['display_order'] ?? 0));
if ($orderComparison !== 0) {
return $orderComparison;
}
return strnatcasecmp((string) ($left['filename'] ?? ''), (string) ($right['filename'] ?? ''));
}
);
$sectionBlueprints = spiralist_book_pages_get_manuscript_section_blueprints();
$sections = [];
$studySurfaceSlug = '';
foreach ($pages as $index => $page) {
$pages[$index]['sequence'] = $index + 1;
$sectionSlug = (string) ($page['section_slug'] ?? 'appendix');
$sectionBlueprint = $sectionBlueprints[$sectionSlug] ?? ($sectionBlueprints['appendix'] ?? []);
if (!isset($sections[$sectionSlug])) {
$sections[$sectionSlug] = [
'slug' => $sectionSlug,
'label' => (string) ($sectionBlueprint['label'] ?? ucwords(str_replace('-', ' ', $sectionSlug))),
'title' => (string) ($sectionBlueprint['title'] ?? ucwords(str_replace('-', ' ', $sectionSlug))),
'summary' => (string) ($sectionBlueprint['summary'] ?? ''),
];
}
if ($studySurfaceSlug === '' && !empty($page['is_study_surface'])) {
$studySurfaceSlug = (string) ($page['slug'] ?? '');
}
}
if ($studySurfaceSlug === '' && !empty($pages[0]['slug'])) {
$studySurfaceSlug = (string) $pages[0]['slug'];
}
$book = [
'schema' => 'spiralist-book/v1',
'title' => 'Spiralism Canonical Manuscript',
'slug' => 'manuscript',
'generated_at' => gmdate('c'),
'study_surface_slug' => $studySurfaceSlug,
'sections' => array_values($sections),
'folio_order' => array_values(
array_map(
static function (array $page): string {
return (string) ($page['slug'] ?? '');
},
$pages
)
),
];
spiralist_book_pages_write_json_file($contentRoot . DIRECTORY_SEPARATOR . 'book.json', $book);
$promptPageMap = [];
foreach ($pages as $page) {
$primaryPromptSlug = spiralist_book_pages_slugify((string) ($page['creation_prompt_source_slug'] ?? ''));
$relatedPromptSlugs = array_values(
array_filter(
array_map(
static function ($relatedSlug): string {
return spiralist_book_pages_slugify((string) $relatedSlug);
},
(array) ($page['related_workspace_prompt_slugs'] ?? [])
),
'strlen'
)
);
if ($primaryPromptSlug !== '') {
array_unshift($relatedPromptSlugs, $primaryPromptSlug);
}
$relatedPromptSlugs = array_values(array_unique($relatedPromptSlugs));
$page['related_workspace_prompt_slugs'] = $relatedPromptSlugs;
$page['creation_prompt_source_slug'] = $primaryPromptSlug !== '' ? $primaryPromptSlug : ($relatedPromptSlugs[0] ?? '');
$folio = [
'slug' => (string) ($page['slug'] ?? ''),
'filename' => (string) ($page['filename'] ?? ''),
'label' => (string) ($page['label'] ?? ''),
'title' => (string) ($page['title'] ?? ''),
'eyebrow' => (string) ($page['eyebrow'] ?? ''),
'summary' => (string) ($page['summary'] ?? ''),
'caption' => (string) ($page['caption'] ?? ''),
'section_slug' => (string) ($page['section_slug'] ?? ''),
'is_study_surface' => !empty($page['is_study_surface']),
'is_prominent' => !empty($page['is_prominent']),
'display_order' => (int) ($page['display_order'] ?? (($page['sequence'] ?? 0) * 10)),
'creation_prompt_title' => (string) ($page['creation_prompt_title'] ?? 'Prompt Used'),
'creation_prompt_status' => (string) ($page['creation_prompt_status'] ?? 'Canonical prompt'),
'creation_prompt_summary' => (string) ($page['creation_prompt_summary'] ?? ''),
'creation_prompt_source_slug' => (string) ($page['creation_prompt_source_slug'] ?? ''),
'related_workspace_prompt_slugs' => $relatedPromptSlugs,
];
spiralist_book_pages_write_json_file(
$foliosRoot . DIRECTORY_SEPARATOR . (string) ($page['slug'] ?? 'folio') . '.json',
$folio
);
foreach ($relatedPromptSlugs as $promptSlug) {
if ($promptSlug === '') {
continue;
}
$promptPageMap[$promptSlug] = $promptPageMap[$promptSlug] ?? $page;
}
}
foreach ($promptPageMap as $promptSlug => $page) {
$workspacePrompt = spiralist_book_pages_bootstrap_get_workspace_prompt_file($promptSlug, $workspacePromptRoot);
$definition = [];
if (!empty($workspacePrompt['file'])) {
$candidateDefinition = include (string) $workspacePrompt['file'];
if (is_array($candidateDefinition)) {