Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-09-01 12:10:28 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-09-01 12:10:28 +0300
commita928c5170fa58e4aef91ebca6c4fc9ec7cea812e (patch)
treedc700a0e00f32ea0aa8f642b75b7da7c24ade7e8 /app/assets/javascripts/static_site_editor
parent0a6b0190477aec55a1cff8e2812b177ea6df39b2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/static_site_editor')
-rw-r--r--app/assets/javascripts/static_site_editor/services/parse_source_file.js11
-rw-r--r--app/assets/javascripts/static_site_editor/services/parse_source_file_language_support.js17
2 files changed, 25 insertions, 3 deletions
diff --git a/app/assets/javascripts/static_site_editor/services/parse_source_file.js b/app/assets/javascripts/static_site_editor/services/parse_source_file.js
index dca34e16e8d..57505d50d6e 100644
--- a/app/assets/javascripts/static_site_editor/services/parse_source_file.js
+++ b/app/assets/javascripts/static_site_editor/services/parse_source_file.js
@@ -1,6 +1,11 @@
-const parseSourceFile = raw => {
- const frontMatterRegex = /(^---$[\s\S]*?^---$)/m;
- const preGroupedRegex = /([\s\S]*?)(^---$[\s\S]*?^---$)(\s*)([\s\S]*)/m; // preFrontMatter, frontMatter, spacing, and content
+import getFrontMatterLanguageDefinition from './parse_source_file_language_support';
+
+const parseSourceFile = (raw, options = { frontMatterLanguage: 'yaml' }) => {
+ const { open, close } = getFrontMatterLanguageDefinition(options.frontMatterLanguage);
+ const anyChar = '[\\s\\S]';
+ const frontMatterBlock = `^${open}$${anyChar}*?^${close}$`;
+ const frontMatterRegex = new RegExp(`${frontMatterBlock}`, 'm');
+ const preGroupedRegex = new RegExp(`(${anyChar}*?)(${frontMatterBlock})(\\s*)(${anyChar}*)`, 'm'); // preFrontMatter, frontMatter, spacing, and content
let initial;
let editable;
diff --git a/app/assets/javascripts/static_site_editor/services/parse_source_file_language_support.js b/app/assets/javascripts/static_site_editor/services/parse_source_file_language_support.js
new file mode 100644
index 00000000000..ec0eaca81b8
--- /dev/null
+++ b/app/assets/javascripts/static_site_editor/services/parse_source_file_language_support.js
@@ -0,0 +1,17 @@
+const frontMatterLanguageDefinitions = [
+ { name: 'yaml', open: '---', close: '---' },
+ { name: 'toml', open: '\\+\\+\\+', close: '\\+\\+\\+' },
+ { name: 'json', open: '{', close: '}' },
+];
+
+const getFrontMatterLanguageDefinition = name => {
+ const languageDefinition = frontMatterLanguageDefinitions.find(def => def.name === name);
+
+ if (!languageDefinition) {
+ throw new Error(`Unsupported front matter language: ${name}`);
+ }
+
+ return languageDefinition;
+};
+
+export default getFrontMatterLanguageDefinition;