Class: Markawesome::BadgeTransformer

Inherits:
BaseTransformer show all
Defined in:
lib/markawesome/transformers/badge_transformer.rb

Overview

Transforms badge syntax into wa-badge elements Primary syntax: !!!params?ncontentn!!!

Alternative syntax: :::wa-badge params?ncontentn:

Params: space-separated tokens, any order (rightmost-wins for conflicts) Variants: brand, success, neutral, warning, danger Appearance: accent, filled, outlined, filled-outlined Attention: none, pulse, bounce Flags: pill

Constant Summary collapse

BADGE_ATTRIBUTES =
{
  variant: %w[brand success neutral warning danger],
  appearance: %w[accent filled outlined filled-outlined],
  attention: %w[none pulse bounce],
  pill: %w[pill]
}.freeze

Class Method Summary collapse

Class Method Details

.render_as_markdown(content, _options = {}) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/markawesome/transformers/badge_transformer.rb', line 44

def self.render_as_markdown(content, _options = {})
  primary_regex = /^!!!(.*?)\n(.*?)\n!!!/m
  alternative_regex = /^:::wa-badge\s*(.*?)\n(.*?)\n:::/m

  transform_proc = proc do |_params_string, badge_content|
    text = badge_content.to_s.strip
    text.empty? ? '' : "**#{text}**"
  end

  patterns = dual_syntax_patterns(primary_regex, alternative_regex, transform_proc)
  apply_multiple_patterns(content, patterns)
end

.transform(content) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/markawesome/transformers/badge_transformer.rb', line 24

def self.transform(content)
  # Define both regex patterns - capture params as a single string
  primary_regex = /^!!!(.*?)\n(.*?)\n!!!/m
  alternative_regex = /^:::wa-badge\s*(.*?)\n(.*?)\n:::/m

  # Define shared transformation logic
  transform_proc = proc do |params_string, badge_content|
    badge_content = badge_content.strip

    # Parse space-separated parameters
    attributes = AttributeParser.parse(params_string, BADGE_ATTRIBUTES)

    build_badge_html(badge_content, attributes)
  end

  # Apply both patterns
  patterns = dual_syntax_patterns(primary_regex, alternative_regex, transform_proc)
  apply_multiple_patterns(content, patterns)
end