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:
Diffstat (limited to 'lib/banzai/filter/front_matter_filter.rb')
-rw-r--r--lib/banzai/filter/front_matter_filter.rb25
1 files changed, 4 insertions, 21 deletions
diff --git a/lib/banzai/filter/front_matter_filter.rb b/lib/banzai/filter/front_matter_filter.rb
index 544231adea4..5900e762244 100644
--- a/lib/banzai/filter/front_matter_filter.rb
+++ b/lib/banzai/filter/front_matter_filter.rb
@@ -3,28 +3,11 @@
module Banzai
module Filter
class FrontMatterFilter < HTML::Pipeline::Filter
- DELIM_LANG = {
- '---' => 'yaml',
- '+++' => 'toml',
- ';;;' => 'json'
- }.freeze
-
- DELIM = Regexp.union(DELIM_LANG.keys)
-
- PATTERN = %r{
- \A(?:[^\r\n]*coding:[^\r\n]*)? # optional encoding line
- \s*
- ^(?<delim>#{DELIM})[ \t]*(?<lang>\S*) # opening front matter marker (optional language specifier)
- \s*
- ^(?<front_matter>.*?) # front matter (not greedy)
- \s*
- ^\k<delim> # closing front matter marker
- \s*
- }mx.freeze
-
def call
- html.sub(PATTERN) do |_match|
- lang = $~[:lang].presence || DELIM_LANG[$~[:delim]]
+ lang_mapping = Gitlab::FrontMatter::DELIM_LANG
+
+ html.sub(Gitlab::FrontMatter::PATTERN) do |_match|
+ lang = $~[:lang].presence || lang_mapping[$~[:delim]]
["```#{lang}", $~[:front_matter], "```", "\n"].join("\n")
end