Class: Banzai::Pipeline::GfmPipeline

Inherits:
BasePipeline show all
Defined in:
lib/banzai/pipeline/gfm_pipeline.rb

Direct Known Subclasses

SingleLinePipeline

Class Method Summary collapse

Methods inherited from BasePipeline

html_pipeline

Class Method Details

.filtersObject

These filters transform GitLab Flavored Markdown (GFM) to HTML. The nodes and marks referenced in app/assets/javascripts/behaviors/markdown/editor_extensions.js consequently transform that same HTML to GFM to be copied to the clipboard. Every filter that generates HTML from GFM should have a node or mark in app/assets/javascripts/behaviors/markdown/editor_extensions.js. The GFM-to-HTML-to-GFM cycle is tested in spec/features/copy_as_gfm_spec.rb.


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/banzai/pipeline/gfm_pipeline.rb', line 12

def self.filters
  @filters ||= FilterArray[
    Filter::PlantumlFilter,
    # Must always be before the SanitizationFilter to prevent XSS attacks
    Filter::SpacedLinkFilter,
    Filter::SanitizationFilter,
    Filter::AssetProxyFilter,
    Filter::SyntaxHighlightFilter,
    Filter::MathFilter,
    Filter::ColorFilter,
    Filter::MermaidFilter,
    Filter::VideoLinkFilter,
    Filter::AudioLinkFilter,
    Filter::ImageLazyLoadFilter,
    Filter::ImageLinkFilter,
    *metrics_filters,
    Filter::TableOfContentsFilter,
    Filter::TableOfContentsTagFilter,
    Filter::AutolinkFilter,
    Filter::ExternalLinkFilter,
    Filter::SuggestionFilter,
    Filter::FootnoteFilter,
    *reference_filters,
    Filter::EmojiFilter,
    Filter::TaskListFilter,
    Filter::InlineDiffFilter,
    Filter::SetDirectionFilter
  ]
end

.metrics_filtersObject


42
43
44
45
46
47
48
# File 'lib/banzai/pipeline/gfm_pipeline.rb', line 42

def self.metrics_filters
  [
    Filter::InlineMetricsFilter,
    Filter::InlineGrafanaMetricsFilter,
    Filter::InlineClusterMetricsFilter
  ]
end

.reference_filtersObject


50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/banzai/pipeline/gfm_pipeline.rb', line 50

def self.reference_filters
  [
    Filter::UserReferenceFilter,
    Filter::ProjectReferenceFilter,
    Filter::DesignReferenceFilter,
    Filter::IssueReferenceFilter,
    Filter::ExternalIssueReferenceFilter,
    Filter::MergeRequestReferenceFilter,
    Filter::SnippetReferenceFilter,
    Filter::CommitRangeReferenceFilter,
    Filter::CommitReferenceFilter,
    Filter::LabelReferenceFilter,
    Filter::MilestoneReferenceFilter
  ]
end

.transform_context(context) ⇒ Object


66
67
68
69
70
# File 'lib/banzai/pipeline/gfm_pipeline.rb', line 66

def self.transform_context(context)
  context[:only_path] = true unless context.key?(:only_path)

  Filter::AssetProxyFilter.transform_context(context)
end