Module: Plurimath::Math
- Defined in:
- lib/plurimath/math.rb,
lib/plurimath/math/core.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/lg.rb,
lib/plurimath/math/function/ln.rb,
lib/plurimath/math/function/ms.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/arg.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/nary.rb,
lib/plurimath/math/function/none.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/intent.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/mglyph.rb,
lib/plurimath/math/function/msline.rb,
lib/plurimath/math/function/obrace.rb,
lib/plurimath/math/function/ubrace.rb,
lib/plurimath/math/function/longdiv.rb,
lib/plurimath/math/function/mpadded.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/linebreak.rb,
lib/plurimath/math/function/semantics.rb,
lib/plurimath/math/function/underover.rb,
lib/plurimath/math/function/font_style.rb,
lib/plurimath/math/function/mlabeledtr.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/cases.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/eqarray.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/bold-italic.rb,
lib/plurimath/math/function/font_style/bold-script.rb,
lib/plurimath/math/function/font_style/bold-fraktur.rb,
lib/plurimath/math/function/font_style/double_struck.rb,
lib/plurimath/math/function/font_style/bold-sans-serif.rb,
lib/plurimath/math/function/font_style/sans-serif-italic.rb,
lib/plurimath/math/function/font_style/sans-serif-bold-italic.rb
Defined Under Namespace
Modules: Function
Classes: Core, Formula, InvalidTypeError, Number, ParseError, Symbol, Unicode
Constant Summary
collapse
- VALID_TYPES =
{
omml: Omml,
html: Html,
latex: Latex,
mathml: Mathml,
unitsml: Unitsml,
unicode: UnicodeMath,
asciimath: Asciimath,
}.freeze
Class Method Summary
collapse
Class Method Details
.klass_from_type(type_string_or_sym) ⇒ Object
56
57
58
|
# File 'lib/plurimath/math.rb', line 56
def klass_from_type(type_string_or_sym)
VALID_TYPES[type_string_or_sym.to_sym]
end
|
.parse(text, type) ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/plurimath/math.rb', line 41
def parse(text, type)
type_error! unless valid_type?(type)
begin
klass = klass_from_type(type)
formula = klass.new(text).to_formula
formula.input_string = text
formula
rescue => ee
parse_error!(text, type.to_sym)
end
end
|
.parse_error!(text, type) ⇒ Object
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/plurimath/math.rb', line 60
def parse_error!(text, type)
message = <<~MESSAGE
[plurimath] Error: Failed to parse the following formula with type `#{type}`.
[plurimath] Please first manually validate the formula.
[plurimath] If this is a bug, please report the formula at our issue tracker at:
[plurimath] https://github.com/plurimath/plurimath/issues
---- FORMULA BEGIN ----
#{text}
---- FORMULA END ----
MESSAGE
raise ParseError.new(message), cause: nil
end
|
.type_error! ⇒ Object
73
74
75
76
77
|
# File 'lib/plurimath/math.rb', line 73
def type_error!
raise InvalidTypeError.new(
"`type` must be one of: `#{VALID_TYPES.keys.join('`, `')}`",
)
end
|
.valid_type?(type) ⇒ Boolean
79
80
81
82
|
# File 'lib/plurimath/math.rb', line 79
def valid_type?(type)
(type.is_a?(::Symbol) || type.is_a?(String)) &&
VALID_TYPES.key?(type.to_sym)
end
|