mirror of
https://github.com/denoland/std.git
synced 2024-11-22 04:59:05 +00:00
9be9eaea4b
initial commit
54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
/**
|
|
* Supported format for front matter. `"unknown"` is used when auto format
|
|
* detection logic fails.
|
|
*/
|
|
export type Format = "yaml" | "toml" | "json";
|
|
|
|
const BOM = "\\ufeff?";
|
|
|
|
const YAML_DELIMITER = "= yaml =|---";
|
|
const YAML_HEADER = `(---yaml|${YAML_DELIMITER})\\s*`;
|
|
const YAML_FOOTER = `(?:---|${YAML_DELIMITER})`;
|
|
|
|
const TOML_DELIMITER = "\\+\\+\\+|= toml =";
|
|
const TOML_HEADER = `(---toml|${TOML_DELIMITER})\\s*`;
|
|
const TOML_FOOTER = `(?:---|${TOML_DELIMITER})`;
|
|
|
|
const JSON_DELIMITER = `= json =`;
|
|
const JSON_HEADER = `(---json|${JSON_DELIMITER})\\s*`;
|
|
const JSON_FOOTER = `(?:---|${JSON_DELIMITER})`;
|
|
|
|
const DATA = "([\\s\\S]+?)";
|
|
const NEWLINE = "\\r?\\n?";
|
|
|
|
export const RECOGNIZE_YAML_REGEXP = new RegExp(`^${YAML_HEADER}$`, "im");
|
|
export const RECOGNIZE_TOML_REGEXP = new RegExp(`^${TOML_HEADER}$`, "im");
|
|
export const RECOGNIZE_JSON_REGEXP = new RegExp(`^${JSON_HEADER}$`, "im");
|
|
|
|
export const EXTRACT_YAML_REGEXP = new RegExp(
|
|
`^(${BOM}${YAML_HEADER}$${DATA}^${YAML_FOOTER}\\s*$${NEWLINE})`,
|
|
"im",
|
|
);
|
|
export const EXTRACT_TOML_REGEXP = new RegExp(
|
|
`^(${BOM}${TOML_HEADER}$${DATA}^${TOML_FOOTER}\\s*$${NEWLINE})`,
|
|
"im",
|
|
);
|
|
export const EXTRACT_JSON_REGEXP = new RegExp(
|
|
`^(${BOM}${JSON_HEADER}$${DATA}^${JSON_FOOTER}\\s*$${NEWLINE})`,
|
|
"im",
|
|
);
|
|
|
|
export const RECOGNIZE_REGEXP_MAP = new Map([
|
|
["yaml", RECOGNIZE_YAML_REGEXP],
|
|
["toml", RECOGNIZE_TOML_REGEXP],
|
|
["json", RECOGNIZE_JSON_REGEXP],
|
|
]);
|
|
|
|
export const EXTRACT_REGEXP_MAP = new Map([
|
|
["yaml", EXTRACT_YAML_REGEXP],
|
|
["toml", EXTRACT_TOML_REGEXP],
|
|
["json", EXTRACT_JSON_REGEXP],
|
|
]);
|