Sha256: 2b3ae1ebfede29b30e0bbd746022397c99068159aedf994d5614188533b23d1b

Contents?: true

Size: 1.18 KB

Versions: 16

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module DocTemplate
  module Tags
    class DialogueTag < BlockTag
      include ERB::Util

      TAG_NAME = 'dialogue'
      TEMPLATES = { default: 'dialogue.html.erb',
                    gdoc: 'gdoc/dialogue.html.erb' }.freeze

      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

      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
    end
  end

  Template.register_tag(Tags::DialogueTag::TAG_NAME, Tags::DialogueTag)
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
lcms-engine-0.5.5 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.5.4 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.5.3 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.5.2 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.5.1 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.5.0 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.4.2 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.4.1 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.4.0 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.3.1 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.1.4 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.3.0 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.1.3 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.2.0 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.1.2 lib/doc_template/tags/dialogue_tag.rb
lcms-engine-0.1.0 lib/doc_template/tags/dialogue_tag.rb