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