diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-01 12:10:28 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-01 12:10:28 +0300 |
commit | a928c5170fa58e4aef91ebca6c4fc9ec7cea812e (patch) | |
tree | dc700a0e00f32ea0aa8f642b75b7da7c24ade7e8 /app/assets/javascripts/static_site_editor | |
parent | 0a6b0190477aec55a1cff8e2812b177ea6df39b2 (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.js | 11 | ||||
-rw-r--r-- | app/assets/javascripts/static_site_editor/services/parse_source_file_language_support.js | 17 |
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; |