#![allow(non_snake_case)]
#![allow(unused_variables)]
#![doc = include_str!("readme.md")]
mod matrix;
use crate::{blocks::MathStyle, LineThickness, MathFraction, MathML, MathMultiScript, MathRow, MathTable};
pub use self::matrix::*;
#[doc = include_str!("vmatrix.xml")]
pub fn frac<N, D>(numerator: N, denominator: D) -> MathML
where
N: Into<MathML>,
D: Into<MathML>,
{
MathFraction::new(numerator, denominator).into()
}
#[doc = include_str!("vmatrix.xml")]
pub fn dfrac<N, D>(numerator: N, denominator: D) -> MathML
where
N: Into<MathML>,
D: Into<MathML>,
{
MathStyle::display(frac(numerator, denominator)).into()
}
#[doc = include_str!("vmatrix.xml")]
pub fn cfrac(numerator: MathML, denominator: MathML) -> MathML {
todo!()
}
pub fn binom(numerator: MathML, denominator: MathML) -> MathML {
MathFraction::new(numerator, denominator).with_thickness(LineThickness::Length(0)).into()
}
#[doc = include_str!("vmatrix.xml")]
pub fn cbinom(numerator: MathML, denominator: MathML) -> MathML {
MathMultiScript::sub_super_script(MathML::identifier("C"), numerator, denominator).into()
}
pub fn legendre_symbols(numerator: MathML, denominator: MathML) -> MathML {
todo!()
}
pub fn isotope(nucleus: usize, atomic_number: usize, mass_number: usize) -> MathML {
todo!()
}
#[inline(always)]
pub fn safe_html_char<W>(writer: &mut W, c: char) -> std::fmt::Result
where
W: std::fmt::Write,
{
match c {
'<' => writer.write_str("<"),
'>' => writer.write_str(">"),
'&' => writer.write_str("&"),
'"' => writer.write_str("""),
'\'' => writer.write_str("'"),
_ => writer.write_char(c),
}
}
#[inline(always)]
pub fn safe_html_str<W>(writer: &mut W, s: &str) -> std::fmt::Result
where
W: std::fmt::Write,
{
for c in s.chars() {
safe_html_char(writer, c)?;
}
Ok(())
}