Class: Tramway::NativeTextComponent

Inherits:
BaseComponent
  • Object
show all
Defined in:
app/components/tramway/native_text_component.rb

Overview

Displays text with size-based utility classes.

Constant Summary collapse

URL_REGEX =
%r{https?://[^\s<]+}
MAX_URL_LENGTH =
41
HEADER_REGEX =
/\A(#{Regexp.escape('#')}{1,6})\s+(.+)\z/
LIST_ITEM_REGEX =
/\A[-*]\s+(.+)\z/
HEADER_CLASSES =
{
  1 => 'text-4xl font-bold leading-tight mt-4 mb-2',
  2 => 'text-3xl font-bold leading-tight mt-4 mb-2',
  3 => 'text-2xl font-semibold leading-snug mt-3 mb-2',
  4 => 'text-xl font-semibold leading-snug mt-3 mb-2',
  5 => 'text-lg font-semibold leading-snug mt-2 mb-1',
  6 => 'text-base font-semibold leading-snug mt-2 mb-1'
}.freeze

Instance Method Summary collapse

Instance Method Details

#rendered_htmlObject



25
26
27
28
29
30
# File 'app/components/tramway/native_text_component.rb', line 25

def rendered_html
  # Safe because this is an empty static string literal, not user-controlled content.
  return ''.html_safe if text.blank?

  helpers.safe_join(rendered_blocks)
end

#text_classObject



32
33
34
# File 'app/components/tramway/native_text_component.rb', line 32

def text_class
  { small: 'text-sm', large: 'text-lg', middle: 'text-base' }.fetch(size, 'md:text-sm lg:text-base') + " #{klass}"
end