Sha256: 0a4d0607e2432fe9b45a2c492b44a981506068643c355be674067c56807bd7b7

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

# KaTeX support for Kramdown < v1.17.0 (newer versions have built-in support).

module Thredded
  module MarkdownKatex
    module Kramdown
      # The KaTeX converter engine for Kramdown.
      module KatexConverter
        # rubocop:disable Metrics/MethodLength, Naming/MethodParameterName

        def self.call(converter, el, opts)
          display_mode = el.options[:category] == :block
          result = ::Katex.render(
            el.value,
            display_mode: display_mode,
            throw_on_error: false,
            **converter.options[:math_engine_opts]
          )
          attr = el.attr.dup
          attr.delete('xmlns')
          attr.delete('display')
          result
            .insert(result =~ /[[:space:]>]/, converter.html_attributes(attr))
          result = "#{' ' * opts[:indent]}#{result}\n" if display_mode
          result
        end
        # rubocop:enable Metrics/MethodLength, Naming/MethodParameterName
      end
    end
  end
end

require 'kramdown/converter'
Kramdown::Converter
  .add_math_engine(:katex, ::Thredded::MarkdownKatex::Kramdown::KatexConverter)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
thredded-markdown_katex-1.0.0 lib/thredded/markdown_katex/kramdown/katex_converter.rb