|
3 | 3 | */ |
4 | 4 |
|
5 | 5 | import { format } from "date-fns"; |
6 | | -import { escapeBody } from "./escapeUtils"; |
| 6 | +import { escapeBody , escapeYamlString} from "./escapeUtils"; |
7 | 7 |
|
8 | 8 | /** |
9 | 9 | * Represents the data available for template replacement |
10 | 10 | */ |
11 | 11 | interface TemplateData { |
12 | 12 | title: string; |
| 13 | + title_yaml: string; |
13 | 14 | number: number; |
14 | 15 | status: string; |
15 | 16 | author: string; |
@@ -128,6 +129,7 @@ export function processTemplate( |
128 | 129 | // Available template variables: |
129 | 130 | const replacements: Record<string, string> = { |
130 | 131 | "{title}": data.title || "Untitled", |
| 132 | + "{title_yaml}": data.title_yaml || "Untitled", |
131 | 133 | "{number}": data.number.toString(), |
132 | 134 | "{status}": data.status || "unknown", |
133 | 135 | "{state}": data.state || data.status || "unknown", |
@@ -300,6 +302,7 @@ export function createIssueTemplateData( |
300 | 302 |
|
301 | 303 | return { |
302 | 304 | title: issue.title || "Untitled", |
| 305 | + title_yaml: escapeYamlString(issue.title || "Untitled"), |
303 | 306 | number: issue.number, |
304 | 307 | status: issue.state || "unknown", |
305 | 308 | state: issue.state || "unknown", |
@@ -344,6 +347,7 @@ export function createPullRequestTemplateData( |
344 | 347 |
|
345 | 348 | return { |
346 | 349 | title: pr.title || "Untitled", |
| 350 | + title_yaml: escapeYamlString(pr.title || "Untitled"), |
347 | 351 | number: pr.number, |
348 | 352 | status: pr.state || "unknown", |
349 | 353 | state: pr.state || "unknown", |
@@ -383,6 +387,7 @@ export function getTemplateHelp(): string { |
383 | 387 |
|
384 | 388 | Basic Information: |
385 | 389 | • {title} - Issue/PR title |
| 390 | +• {title_yaml} - Issue/PR title (YAML-escaped for use in frontmatter) |
386 | 391 | • {number} - Issue/PR number |
387 | 392 | • {status} / {state} - Current status (open, closed, etc.) |
388 | 393 | • {author} - Username who created the issue/PR |
@@ -454,6 +459,7 @@ export function extractNumberFromFilename(filename: string, template: string): s |
454 | 459 | // Replace template variables with regex patterns |
455 | 460 | pattern = pattern.replace(/\\?\{number\}/g, '(\\d+)'); |
456 | 461 | pattern = pattern.replace(/\\?\{title\}/g, '.*?'); |
| 462 | + pattern = pattern.replace(/\\?\{title_yaml\}/g, '.*?'); |
457 | 463 | pattern = pattern.replace(/\\?\{status\}/g, '\\w+'); |
458 | 464 | pattern = pattern.replace(/\\?\{author\}/g, '[^\\s]+'); |
459 | 465 | pattern = pattern.replace(/\\?\{assignee\}/g, '[^\\s]*'); |
|
0 commit comments