class DocTemplate::Tags::DialogueTag

Constants

TAG_NAME
TEMPLATES

Public Instance Methods

parse(node, opts = {}) click to toggle source
# File lib/doc_template/tags/dialogue_tag.rb, line 12
def parse(node, opts = {})
  @tags = []

  nodes = block_nodes node
  nodes.map(&:remove)

  params = { phrases: format_phrases(nodes) }
  parsed_content = parse_template params, template_name(opts)
  @content = parse_nested parsed_content, opts
  replace_tag node
  self
end

Private Instance Methods

format_phrases(nodes) click to toggle source
# File lib/doc_template/tags/dialogue_tag.rb, line 27
def format_phrases(nodes)
  delimiter = '{|}'

  t_re = /T:/
  s_re = /S:/
  mixed_re = %r{T/S:}

  nodes.map(&:to_html)
    .join(delimiter)
    .sub(t_re, '<strong>Teacher:</strong>')
    .sub(s_re, '<strong>Student:</strong>')
    .gsub(mixed_re, '<strong>T/S:</strong>')
    .gsub(t_re, '<strong>T:</strong>')
    .gsub(s_re, '<strong>S:</strong>')
    .squish
    .split(delimiter)
    .reject(&:blank?)
end