Class: Markawesome::PopoverTransformer
- Inherits:
-
BaseTransformer
- Object
- BaseTransformer
- Markawesome::PopoverTransformer
- Defined in:
- lib/markawesome/transformers/popover_transformer.rb
Overview
Transforms popover syntax into wa-popover elements with trigger buttons Primary syntax: &&¶msntrigger textn>>>ncontentn&&&
- Alternative syntax: :::wa-popover paramsntrigger textn>>>ncontentn:
-
Params: space-separated tokens (order doesn’t matter) Placement: top (default), bottom, left, right Flags: without-arrow Distance: distance:N (e.g., distance:10)
Constant Summary collapse
- POPOVER_ATTRIBUTES =
{ placement: %w[top bottom left right], without_arrow: %w[without-arrow], trigger_style: %w[link] }.freeze
Class Method Summary collapse
Class Method Details
.transform(content) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/markawesome/transformers/popover_transformer.rb', line 23 def self.transform(content) primary_regex = /^&&&([^\n]*)$\n(.*?)\n^>>>$\n(.*?)\n^&&&$/m alternative_regex = /^:::wa-popover([^\n]*)$\n(.*?)\n^>>>$\n(.*?)\n^:::$/m transform_proc = proc do |params_string, trigger_text, popover_content| trigger_text = trigger_text.strip popover_content = popover_content.strip placement, without_arrow, distance, link_style = parse_parameters(params_string) popover_id = generate_popover_id(trigger_text, popover_content) content_html = markdown_to_html(popover_content) build_popover_html(popover_id, trigger_text, content_html, { placement: placement, without_arrow: without_arrow, distance: distance, link_style: link_style }) end patterns = dual_syntax_patterns(primary_regex, alternative_regex, transform_proc) apply_multiple_patterns(content, patterns) end |