Class: Markawesome::LayoutTransformer
- Inherits:
-
BaseTransformer
- Object
- BaseTransformer
- Markawesome::LayoutTransformer
- Defined in:
- lib/markawesome/transformers/layout_transformer.rb
Overview
Transforms layout syntax into CSS layout utility containers
- Primary syntax: ::::type params?ncontentn::
- Alternative syntax: ::::wa-type params?ncontentn::
-
Supported types: grid, stack, cluster, split, flank, frame
Common attributes (all layouts):
gap:SIZE - wa-gap-{SIZE} class (0, 3xs, 2xs, xs, s, m, l, xl, 2xl, 3xl) align:VALUE - wa-align-items-{VALUE} class (start, end, center, stretch, baseline) justify:VALUE - wa-justify-content-{VALUE} class (start, end, center, space-between, space-around, space-evenly)Grid-specific: min:CSS_VALUE - sets –min-column-size style Split-specific: row, column modifiers Flank-specific: start, end modifiers; size:CSS_VALUE, content:PCT Frame-specific: landscape, portrait, square modifiers; radius:SIZE
Constant Summary collapse
- VALID_GAPS =
%w[0 3xs 2xs xs s m l xl 2xl 3xl].freeze
- VALID_ALIGNS =
%w[start end center stretch baseline].freeze
- VALID_JUSTIFIES =
%w[start end center space-between space-around space-evenly].freeze
- VALID_RADII =
%w[s m l pill circle square].freeze
- KEYWORD_MODIFIERS =
{ split: %w[row column], flank: %w[start end], frame: %w[landscape portrait square] }.freeze
- COMMON_KEY_CLASS_MAP =
{ 'gap' => ->(v) { "wa-gap-#{v}" if VALID_GAPS.include?(v) }, 'align' => ->(v) { "wa-align-items-#{v}" if VALID_ALIGNS.include?(v) }, 'justify' => ->(v) { "wa-justify-content-#{v}" if VALID_JUSTIFIES.include?(v) } }.freeze
Class Method Summary collapse
Class Method Details
.render_as_markdown(content, _options = {}) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/markawesome/transformers/layout_transformer.rb', line 51 def self.render_as_markdown(content, = {}) primary_regex = /^::::(grid|stack|cluster|split|flank|frame)[ \t]*([^\n]*)\n(.*?)\n::::/m alternative_regex = /^::::wa-(grid|stack|cluster|split|flank|frame)[ \t]*([^\n]*)\n(.*?)\n::::/m transform_proc = proc do |_type, _params_string, inner_content| inner_content.to_s end patterns = dual_syntax_patterns(primary_regex, alternative_regex, transform_proc) apply_multiple_patterns(content, patterns) end |
.transform(content) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/markawesome/transformers/layout_transformer.rb', line 38 def self.transform(content) primary_regex = /^::::(grid|stack|cluster|split|flank|frame)[ \t]*([^\n]*)\n(.*?)\n::::/m alternative_regex = /^::::wa-(grid|stack|cluster|split|flank|frame)[ \t]*([^\n]*)\n(.*?)\n::::/m transform_proc = proc do |type, params_string, inner_content| classes, styles = build_attributes(type, params_string) build_html(classes, styles, inner_content) end patterns = dual_syntax_patterns(primary_regex, alternative_regex, transform_proc) apply_multiple_patterns(content, patterns) end |