Class: Markawesome::IconTransformer
- Inherits:
-
BaseTransformer
- Object
- BaseTransformer
- Markawesome::IconTransformer
- 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, = {}) 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 |