Sha256: f859c03ab797c2c86d7bd9f620bf830caa7d3901c35193992f14667dd668d302

Contents?: true

Size: 1.75 KB

Versions: 2

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

require_relative "unicode"
require_relative "asciimath"
require_relative "omml"
require_relative "mathml"
require_relative "html"
require_relative "latex"
require_relative "unitsml"
require_relative "math/base"
require_relative "math/number"
require_relative "math/symbol"
require_relative "math/unicode"
require_relative "math/formula"
require_relative "math/function"
require_relative "asciimath/parser"
require_relative "mathml/parser"
require_relative "latex/parser"
require_relative "html/parser"
require_relative "omml/parser"
require_relative "utility"
require "ox"
Ox.default_options = { encoding: "UTF-8" }

module Plurimath
  module Math
    class Error < StandardError; end

    VALID_TYPES = {
      omml: Omml,
      html: Html,
      latex: Latex,
      mathml: Mathml,
      unitsml: Unitsml,
      unicode: Unicode,
      asciimath: Asciimath,
    }.freeze

    def parse(text, type)
      raise_error! unless valid_type?(type)

      klass = VALID_TYPES[type.to_sym]
      klass.new(text).to_formula
    rescue => ee
      message = <<~MESSAGE
        An error occurred while processing the input. Please check your input to ensure it is valid or open an issue on Github If you believe the input is correct.
        ---- INPUT START ----
          #{text}
        ---- INPUT END ----
      MESSAGE
      raise Math::Error.new(message), cause: nil
    end

    private

    def raise_error!
      raise Plurimath::Math::Error, Error.new("Type is not valid, "\
                                              "please enter string or symbol")
    end

    def valid_type?(type)
      (type.is_a?(::Symbol) || type.is_a?(String)) &&
        VALID_TYPES.key?(type.to_sym)
    end

    module_function :parse, :raise_error!, :valid_type?
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
plurimath-0.3.0 lib/plurimath/math.rb
plurimath-0.2.9 lib/plurimath/math.rb