Sha256: 51dd514c0d7a2b9a9132a4301d332932468dda902da67590aae005d3795618e3

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

module RevealCK
  module Markdown
    # This class embodies the preprocessing that starts with a
    # traditional Markdown document and turns it into something that
    # can later "become" reveal.js slides.
    class PreProcessorForDividers
      attr_reader :doc
      def initialize(doc)
        @doc = doc
      end

      def process
        add_first_slide_divider_if_needed
        add_last_slide_vertical_if_needed
        add_last_slide_divider_if_needed
      end

      private

      def add_first_slide_divider_if_needed
        return if doc.start_with?(slide_divider)
        return if doc.start_with?(slide_vertical)

        prepend(slide_divider)
      end

      def add_last_slide_divider_if_needed
        return if doc.end_with?(slide_divider)
        return if doc.end_with?(slide_vertical)

        append(slide_divider)
      end

      def add_last_slide_vertical_if_needed
        return unless doc.scan(slide_vertical_regex).size.odd?

        append(slide_vertical)
      end

      def slide_divider
        '---'
      end

      def slide_vertical
        '***'
      end

      def slide_vertical_regex
        /^\*\*\*$/
      end

      def prepend(s)
        doc.insert(0, "#{s}\n")
      end

      def append(s)
        doc.insert(doc.size, "\n#{s}")
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
reveal-ck-4.0.0 lib/reveal-ck/markdown/pre_processor_for_dividers.rb
reveal-ck-3.9.2 lib/reveal-ck/markdown/pre_processor_for_dividers.rb
reveal-ck-3.9.1 lib/reveal-ck/markdown/pre_processor_for_dividers.rb
reveal-ck-3.9.0 lib/reveal-ck/markdown/pre_processor_for_dividers.rb
reveal-ck-3.8.1 lib/reveal-ck/markdown/pre_processor_for_dividers.rb