Module: Plurimath::Math

Defined in:
lib/plurimath/math.rb,
lib/plurimath/math/base.rb,
lib/plurimath/math/number.rb,
lib/plurimath/math/symbol.rb,
lib/plurimath/math/formula.rb,
lib/plurimath/math/unicode.rb,
lib/plurimath/math/function.rb,
lib/plurimath/math/function/f.rb,
lib/plurimath/math/function/g.rb,
lib/plurimath/math/function/lg.rb,
lib/plurimath/math/function/ln.rb,
lib/plurimath/math/function/td.rb,
lib/plurimath/math/function/tr.rb,
lib/plurimath/math/function/ul.rb,
lib/plurimath/math/function/abs.rb,
lib/plurimath/math/function/bar.rb,
lib/plurimath/math/function/cos.rb,
lib/plurimath/math/function/cot.rb,
lib/plurimath/math/function/csc.rb,
lib/plurimath/math/function/deg.rb,
lib/plurimath/math/function/det.rb,
lib/plurimath/math/function/dim.rb,
lib/plurimath/math/function/dot.rb,
lib/plurimath/math/function/exp.rb,
lib/plurimath/math/function/gcd.rb,
lib/plurimath/math/function/glb.rb,
lib/plurimath/math/function/hat.rb,
lib/plurimath/math/function/hom.rb,
lib/plurimath/math/function/inf.rb,
lib/plurimath/math/function/int.rb,
lib/plurimath/math/function/ker.rb,
lib/plurimath/math/function/lcm.rb,
lib/plurimath/math/function/lim.rb,
lib/plurimath/math/function/log.rb,
lib/plurimath/math/function/lub.rb,
lib/plurimath/math/function/max.rb,
lib/plurimath/math/function/min.rb,
lib/plurimath/math/function/mod.rb,
lib/plurimath/math/function/sec.rb,
lib/plurimath/math/function/sin.rb,
lib/plurimath/math/function/sum.rb,
lib/plurimath/math/function/sup.rb,
lib/plurimath/math/function/tan.rb,
lib/plurimath/math/function/vec.rb,
lib/plurimath/math/function/base.rb,
lib/plurimath/math/function/ceil.rb,
lib/plurimath/math/function/cosh.rb,
lib/plurimath/math/function/coth.rb,
lib/plurimath/math/function/csch.rb,
lib/plurimath/math/function/ddot.rb,
lib/plurimath/math/function/frac.rb,
lib/plurimath/math/function/left.rb,
lib/plurimath/math/function/mbox.rb,
lib/plurimath/math/function/norm.rb,
lib/plurimath/math/function/oint.rb,
lib/plurimath/math/function/over.rb,
lib/plurimath/math/function/prod.rb,
lib/plurimath/math/function/root.rb,
lib/plurimath/math/function/rule.rb,
lib/plurimath/math/function/sech.rb,
lib/plurimath/math/function/sinh.rb,
lib/plurimath/math/function/sqrt.rb,
lib/plurimath/math/function/tanh.rb,
lib/plurimath/math/function/text.rb,
lib/plurimath/math/function/color.rb,
lib/plurimath/math/function/floor.rb,
lib/plurimath/math/function/power.rb,
lib/plurimath/math/function/right.rb,
lib/plurimath/math/function/table.rb,
lib/plurimath/math/function/tilde.rb,
lib/plurimath/math/function/arccos.rb,
lib/plurimath/math/function/arcsin.rb,
lib/plurimath/math/function/arctan.rb,
lib/plurimath/math/function/cancel.rb,
lib/plurimath/math/function/fenced.rb,
lib/plurimath/math/function/liminf.rb,
lib/plurimath/math/function/limits.rb,
lib/plurimath/math/function/limsup.rb,
lib/plurimath/math/function/merror.rb,
lib/plurimath/math/function/msline.rb,
lib/plurimath/math/function/obrace.rb,
lib/plurimath/math/function/scarry.rb,
lib/plurimath/math/function/ubrace.rb,
lib/plurimath/math/function/longdiv.rb,
lib/plurimath/math/function/msgroup.rb,
lib/plurimath/math/function/overset.rb,
lib/plurimath/math/function/phantom.rb,
lib/plurimath/math/function/menclose.rb,
lib/plurimath/math/function/scarries.rb,
lib/plurimath/math/function/stackrel.rb,
lib/plurimath/math/function/substack.rb,
lib/plurimath/math/function/underset.rb,
lib/plurimath/math/function/semantics.rb,
lib/plurimath/math/function/underline.rb,
lib/plurimath/math/function/underover.rb,
lib/plurimath/math/function/font_style.rb,
lib/plurimath/math/function/power_base.rb,
lib/plurimath/math/function/multiscript.rb,
lib/plurimath/math/function/table/align.rb,
lib/plurimath/math/function/table/array.rb,
lib/plurimath/math/function/table/split.rb,
lib/plurimath/math/function/table/matrix.rb,
lib/plurimath/math/function/table/bmatrix.rb,
lib/plurimath/math/function/table/pmatrix.rb,
lib/plurimath/math/function/table/vmatrix.rb,
lib/plurimath/math/function/table/multline.rb,
lib/plurimath/math/function/unary_function.rb,
lib/plurimath/math/function/binary_function.rb,
lib/plurimath/math/function/font_style/bold.rb,
lib/plurimath/math/function/ternary_function.rb,
lib/plurimath/math/function/font_style/italic.rb,
lib/plurimath/math/function/font_style/normal.rb,
lib/plurimath/math/function/font_style/script.rb,
lib/plurimath/math/function/font_style/fraktur.rb,
lib/plurimath/math/function/font_style/monospace.rb,
lib/plurimath/math/function/font_style/sans-serif.rb,
lib/plurimath/math/function/font_style/double_struck.rb

Defined Under Namespace

Modules: Function Classes: Base, Error, Formula, Number, Symbol, Unicode

Constant Summary collapse

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

Class Method Summary collapse

Class Method Details

.parse(text, type) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/plurimath/math.rb', line 39

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

.raise_error!Object



56
57
58
59
# File 'lib/plurimath/math.rb', line 56

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

.valid_type?(type) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
64
# File 'lib/plurimath/math.rb', line 61

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