2018-04-08 19:10:24 +03:00
|
|
|
"use strict";
|
|
|
|
|
2018-05-21 17:02:09 +03:00
|
|
|
const parseFrontMatter = require("../utils/front-matter");
|
2018-05-15 04:17:15 +03:00
|
|
|
|
2018-04-08 19:10:24 +03:00
|
|
|
const pragmas = ["format", "prettier"];
|
|
|
|
|
|
|
|
function startWithPragma(text) {
|
|
|
|
const pragma = `@(${pragmas.join("|")})`;
|
|
|
|
const regex = new RegExp(
|
|
|
|
[
|
|
|
|
`<!--\\s*${pragma}\\s*-->`,
|
2018-12-08 13:28:29 +03:00
|
|
|
`<!--.*\r?\n[\\s\\S]*(^|\n)[^\\S\n]*${pragma}[^\\S\n]*($|\n)[\\s\\S]*\n.*-->`
|
2018-04-08 19:10:24 +03:00
|
|
|
].join("|"),
|
|
|
|
"m"
|
|
|
|
);
|
|
|
|
const matched = text.match(regex);
|
|
|
|
return matched && matched.index === 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
startWithPragma,
|
2018-05-21 17:02:09 +03:00
|
|
|
hasPragma: text => startWithPragma(parseFrontMatter(text).content.trimLeft()),
|
2018-04-08 19:10:24 +03:00
|
|
|
insertPragma: text => {
|
2018-05-21 17:02:09 +03:00
|
|
|
const extracted = parseFrontMatter(text);
|
2018-04-08 19:10:24 +03:00
|
|
|
const pragma = `<!-- @${pragmas[0]} -->`;
|
2018-05-21 17:02:09 +03:00
|
|
|
return extracted.frontMatter
|
2018-07-03 04:54:40 +03:00
|
|
|
? `${extracted.frontMatter.raw}\n\n${pragma}\n\n${extracted.content}`
|
2018-05-15 04:17:15 +03:00
|
|
|
: `${pragma}\n\n${extracted.content}`;
|
2018-04-08 19:10:24 +03:00
|
|
|
}
|
|
|
|
};
|