diff options
author | Robert Speicher <rspeicher@gmail.com> | 2016-03-01 15:54:35 -0500 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2016-03-01 15:54:35 -0500 |
commit | c9b11322172c97320f6bbddbf6c14b235ab9d7c3 (patch) | |
tree | 80c6997cf3c3910c505f60a10f600116cac6d98f /lib/banzai | |
parent | 6aa50165b0acc355925e271f07ef8e87291e0232 (diff) | |
download | gitlab-ce-c9b11322172c97320f6bbddbf6c14b235ab9d7c3.tar.gz |
Add FilterArray class to Banzairs-filter-array
Diffstat (limited to 'lib/banzai')
-rw-r--r-- | lib/banzai/filter_array.rb | 27 | ||||
-rw-r--r-- | lib/banzai/pipeline/base_pipeline.rb | 2 | ||||
-rw-r--r-- | lib/banzai/pipeline/broadcast_message_pipeline.rb | 2 | ||||
-rw-r--r-- | lib/banzai/pipeline/combined_pipeline.rb | 2 | ||||
-rw-r--r-- | lib/banzai/pipeline/gfm_pipeline.rb | 2 | ||||
-rw-r--r-- | lib/banzai/pipeline/plain_markdown_pipeline.rb | 2 | ||||
-rw-r--r-- | lib/banzai/pipeline/post_process_pipeline.rb | 2 | ||||
-rw-r--r-- | lib/banzai/pipeline/reference_extraction_pipeline.rb | 2 | ||||
-rw-r--r-- | lib/banzai/pipeline/single_line_pipeline.rb | 2 | ||||
-rw-r--r-- | lib/banzai/pipeline/wiki_pipeline.rb | 7 |
10 files changed, 37 insertions, 13 deletions
diff --git a/lib/banzai/filter_array.rb b/lib/banzai/filter_array.rb new file mode 100644 index 00000000000..77835a14027 --- /dev/null +++ b/lib/banzai/filter_array.rb @@ -0,0 +1,27 @@ +module Banzai + class FilterArray < Array + # Insert a value immediately after another value + # + # If the preceding value does not exist, the new value is added to the end + # of the Array. + def insert_after(after_value, value) + i = index(after_value) || length - 1 + + insert(i + 1, value) + end + + # Insert a value immediately before another value + # + # If the succeeding value does not exist, the new value is added to the + # beginning of the Array. + def insert_before(before_value, value) + i = index(before_value) || -1 + + if i < 0 + unshift(value) + else + insert(i, value) + end + end + end +end diff --git a/lib/banzai/pipeline/base_pipeline.rb b/lib/banzai/pipeline/base_pipeline.rb index db5177db7b3..f60966c3c0f 100644 --- a/lib/banzai/pipeline/base_pipeline.rb +++ b/lib/banzai/pipeline/base_pipeline.rb @@ -4,7 +4,7 @@ module Banzai module Pipeline class BasePipeline def self.filters - [] + FilterArray[] end def self.transform_context(context) diff --git a/lib/banzai/pipeline/broadcast_message_pipeline.rb b/lib/banzai/pipeline/broadcast_message_pipeline.rb index 4bb85e24c38..adc09c8afbd 100644 --- a/lib/banzai/pipeline/broadcast_message_pipeline.rb +++ b/lib/banzai/pipeline/broadcast_message_pipeline.rb @@ -2,7 +2,7 @@ module Banzai module Pipeline class BroadcastMessagePipeline < DescriptionPipeline def self.filters - @filters ||= [ + @filters ||= FilterArray[ Filter::MarkdownFilter, Filter::SanitizationFilter, diff --git a/lib/banzai/pipeline/combined_pipeline.rb b/lib/banzai/pipeline/combined_pipeline.rb index 9485199132e..60190f8d9dd 100644 --- a/lib/banzai/pipeline/combined_pipeline.rb +++ b/lib/banzai/pipeline/combined_pipeline.rb @@ -10,7 +10,7 @@ module Banzai end def self.filters - pipelines.flat_map(&:filters) + FilterArray.new(pipelines.flat_map(&:filters)) end def self.transform_context(context) diff --git a/lib/banzai/pipeline/gfm_pipeline.rb b/lib/banzai/pipeline/gfm_pipeline.rb index b7a38ea8427..8cd4b50e65a 100644 --- a/lib/banzai/pipeline/gfm_pipeline.rb +++ b/lib/banzai/pipeline/gfm_pipeline.rb @@ -2,7 +2,7 @@ module Banzai module Pipeline class GfmPipeline < BasePipeline def self.filters - @filters ||= [ + @filters ||= FilterArray[ Filter::SyntaxHighlightFilter, Filter::SanitizationFilter, diff --git a/lib/banzai/pipeline/plain_markdown_pipeline.rb b/lib/banzai/pipeline/plain_markdown_pipeline.rb index 3fbc681457b..3f45db21869 100644 --- a/lib/banzai/pipeline/plain_markdown_pipeline.rb +++ b/lib/banzai/pipeline/plain_markdown_pipeline.rb @@ -2,7 +2,7 @@ module Banzai module Pipeline class PlainMarkdownPipeline < BasePipeline def self.filters - [ + FilterArray[ Filter::MarkdownFilter ] end diff --git a/lib/banzai/pipeline/post_process_pipeline.rb b/lib/banzai/pipeline/post_process_pipeline.rb index bd338c045f3..ecff094b1e5 100644 --- a/lib/banzai/pipeline/post_process_pipeline.rb +++ b/lib/banzai/pipeline/post_process_pipeline.rb @@ -2,7 +2,7 @@ module Banzai module Pipeline class PostProcessPipeline < BasePipeline def self.filters - [ + FilterArray[ Filter::RelativeLinkFilter, Filter::RedactorFilter ] diff --git a/lib/banzai/pipeline/reference_extraction_pipeline.rb b/lib/banzai/pipeline/reference_extraction_pipeline.rb index eaddccd30a5..919998380e4 100644 --- a/lib/banzai/pipeline/reference_extraction_pipeline.rb +++ b/lib/banzai/pipeline/reference_extraction_pipeline.rb @@ -2,7 +2,7 @@ module Banzai module Pipeline class ReferenceExtractionPipeline < BasePipeline def self.filters - [ + FilterArray[ Filter::ReferenceGathererFilter ] end diff --git a/lib/banzai/pipeline/single_line_pipeline.rb b/lib/banzai/pipeline/single_line_pipeline.rb index 8b84ab401df..ba2555df98d 100644 --- a/lib/banzai/pipeline/single_line_pipeline.rb +++ b/lib/banzai/pipeline/single_line_pipeline.rb @@ -2,7 +2,7 @@ module Banzai module Pipeline class SingleLinePipeline < GfmPipeline def self.filters - @filters ||= [ + @filters ||= FilterArray[ Filter::SanitizationFilter, Filter::EmojiFilter, diff --git a/lib/banzai/pipeline/wiki_pipeline.rb b/lib/banzai/pipeline/wiki_pipeline.rb index bc2bf111971..9b4ff0f0f80 100644 --- a/lib/banzai/pipeline/wiki_pipeline.rb +++ b/lib/banzai/pipeline/wiki_pipeline.rb @@ -4,11 +4,8 @@ module Banzai module Pipeline class WikiPipeline < FullPipeline def self.filters - @filters ||= begin - filters = super - toc = filters.index(Filter::TableOfContentsFilter) - filters.insert(toc + 1, Filter::GollumTagsFilter) - end + @filters ||= super.insert_after(Filter::TableOfContentsFilter, + Filter::GollumTagsFilter) end end end |