Class: Markawesome::CarouselTransformer
- Inherits:
-
BaseTransformer
- Object
- BaseTransformer
- Markawesome::CarouselTransformer
- Defined in:
- lib/markawesome/transformers/carousel_transformer.rb
Overview
Transforms carousel syntax into wa-carousel elements Primary syntax: ~~~~~~paramsn~~~ slide1ncontentn~~~n~~~ slide2ncontentn~~~n~~~~~~
- Alternative syntax: :::wa-carousel paramsn~~~ slide1ncontentn~~~n~~~ slide2ncontentn~~~n:
-
Params can include: numbers (slides-per-page, slides-per-move), keywords (loop, navigation, pagination, autoplay, mouse-dragging, vertical), key-value pairs (autoplay-interval:value), and CSS properties (scroll-hint:value, aspect-ratio:value, slide-gap:value)
Constant Summary collapse
- COMPONENT_ATTRIBUTES =
{ loop: %w[loop], navigation: %w[navigation], pagination: %w[pagination], autoplay: %w[autoplay], 'mouse-dragging': %w[mouse-dragging], vertical: %w[vertical] }.freeze
Class Method Summary collapse
Class Method Details
.render_as_markdown(content, _options = {}) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/markawesome/transformers/carousel_transformer.rb', line 47 def self.render_as_markdown(content, = {}) primary_regex = /^~{6}([^\n]*)\n((?:~~~\n(?:.*?\n)?~~~\n?)+)~{6}/m alternative_regex = /^:::wa-carousel\s*([^\n]*)\n((?:~~~\n(?:.*?\n)?~~~\n?)+):::/m transform_proc = proc do |_params, , _third| = () .reject(&:empty?).join("\n\n") end patterns = dual_syntax_patterns(primary_regex, alternative_regex, transform_proc) apply_multiple_patterns(content, patterns) end |
.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 45 |
# File 'lib/markawesome/transformers/carousel_transformer.rb', line 23 def self.transform(content) # Define both regex patterns # Match: ~~~~~~params (optional) # ~~~ # content (can be empty) # ~~~ # (repeat slides) # ~~~~~~ primary_regex = /^~{6}([^\n]*)\n((?:~~~\n(?:.*?\n)?~~~\n?)+)~{6}/m alternative_regex = /^:::wa-carousel\s*([^\n]*)\n((?:~~~\n(?:.*?\n)?~~~\n?)+):::/m # Define shared transformation logic transform_proc = proc do |params, , _third_capture| parsed_params = parse_params(params) = () build_carousel_html(, parsed_params) end # Apply both patterns patterns = dual_syntax_patterns(primary_regex, alternative_regex, transform_proc) apply_multiple_patterns(content, patterns) end |