Sha256: f6a8e1847550f9a2dc07cdb71d766432b6f61dfcafaeba072d281c7c8dd6b10b

Contents?: true

Size: 1001 Bytes

Versions: 2

Compression:

Stored size: 1001 Bytes

Contents

require "math-to-itex/parser"
require "math-to-itex/support_parens"
require "math-to-itex/version"

module MathToItex

  def self.parens(string)
    @string = string
    self
  end

  def self.convert(&block)
    @string.gsub(MathToItex::Parser::REGEX) do |maths|
      if maths =~ /\A\$(?!\$)/
        just_maths = maths[1..-2]
        type = :inline
      elsif maths =~ /^\\\((?!\\\()/
        just_maths = maths[2..-3]
        type = :inline
      elsif maths =~ /\A\$\$/
        just_maths = maths[2..-3]
        type = :display
      elsif maths =~ /\A\\\[(?!\\\[)/
        just_maths = maths[2..-3]
        type = :display
      elsif maths =~ /\A\\begin(?!\\begin)/
        just_maths = maths[16..-15]
        type = :display
      end

      # this is the format itex2MML expects
      if type == :inline
        just_maths = "$#{just_maths}$"
      else
        just_maths = "$$#{just_maths}$$"
      end

      next(just_maths) if block.nil?

      yield just_maths, type
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
math-to-itex-0.3.0 lib/math-to-itex.rb
math-to-itex-0.2.0 lib/math-to-itex.rb