Class: Markawesome::IconTransformer

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

Overview

Transforms icon syntax into wa-icon elements Primary syntax: $$$icon-name Alternative syntax: :::wa-icon icon-name

Examples: $$$settings -> <wa-icon name=“settings”></wa-icon> $$$home -> <wa-icon name=“home”></wa-icon> $$$user-circle -> <wa-icon name=“user-circle”></wa-icon>

Class Method Summary collapse

Class Method Details

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



37
38
39
40
41
42
43
44
45
# File 'lib/markawesome/transformers/icon_transformer.rb', line 37

def self.render_as_markdown(content, _options = {})
  protected_content, code_blocks = protect_code_blocks(content)

  # Drop primary-syntax icons entirely.
  result = protected_content.gsub(/\$\$\$([a-zA-Z0-9\-_]+)(?![a-zA-Z0-9\-_]|\s+name\b)/, '')
  result = result.gsub(/:::wa-icon\s+([a-zA-Z0-9\-_]+)\s*\n:::/m, '')

  restore_code_blocks(result, code_blocks)
end

.transform(content) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/markawesome/transformers/icon_transformer.rb', line 15

def self.transform(content)
  # Protect code blocks first
  protected_content, code_blocks = protect_code_blocks(content)

  # Apply primary syntax transformation
  # Only block patterns that look like incomplete icon names:
  # $$$icon name (where 'icon name' could be intended as one identifier)
  result = protected_content.gsub(/\$\$\$([a-zA-Z0-9\-_]+)(?![a-zA-Z0-9\-_]|\s+name\b)/) do
    icon_name = ::Regexp.last_match(1)
    build_icon_html(icon_name)
  end

  # Apply alternative syntax transformation
  result = result.gsub(/:::wa-icon\s+([a-zA-Z0-9\-_]+)\s*\n:::/m) do
    icon_name = ::Regexp.last_match(1)
    build_icon_html(icon_name)
  end

  # Restore code blocks
  restore_code_blocks(result, code_blocks)
end