Class: Markawesome::CardTransformer

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

Overview

Transforms card syntax into wa-card elements Primary syntax: ===params?ncontentn===

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

Supported attributes:

appearance: outlined (default), filled, filled-outlined, plain, accent
orientation: vertical (default), horizontal

Card header: first bold line (not a heading) becomes the header slot

Constant Summary collapse

CARD_ATTRIBUTES =
{
  appearance: %w[outlined filled filled-outlined plain accent],
  orientation: %w[vertical horizontal]
}.freeze

Class Method Summary collapse

Class Method Details

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



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/markawesome/transformers/card_transformer.rb', line 40

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

  transform_proc = proc do |_params_string, card_content|
    parts = parse_card_content(card_content.to_s.strip)
    render_card_markdown(parts)
  end

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

.transform(content) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/markawesome/transformers/card_transformer.rb', line 20

def self.transform(content)
  # Define both regex patterns - capture any params
  primary_regex = /^===([^\n]*)\n(.*?)\n===/m
  alternative_regex = /^:::wa-card\s*([^\n]*)\n(.*?)\n:::/m

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

    attributes = AttributeParser.parse(params_string, CARD_ATTRIBUTES)
    card_parts = parse_card_content(card_content)

    build_card_html(card_parts, attributes)
  end

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