mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-10 18:58:10 +00:00
MathML: refactor the XArrow mappings as maps.
This commit is contained in:
parent
f0bf41f574
commit
e5eef14414
@ -84,84 +84,68 @@ void InsetMathXArrow::normalize(NormalStream & os) const
|
||||
}
|
||||
|
||||
|
||||
static std::map<string, string> latex_to_html_entities = {
|
||||
{"xleftarrow", "←"},
|
||||
{"xrightarrow", "→"},
|
||||
{"xhookleftarrow", "↩"},
|
||||
{"xhookrightarrow", "↪"},
|
||||
{"xLeftarrow", "⇐"},
|
||||
{"xRightarrow", "⇒"},
|
||||
{"xleftrightarrow", "↔"},
|
||||
{"xLeftrightarrow", "⇔"},
|
||||
{"xleftharpoondown", "↽"},
|
||||
{"xleftharpoonup", "↼"},
|
||||
{"xleftrightharpoons", "⇋"},
|
||||
{"xrightharpoondown", "⇁"},
|
||||
{"xrightharpoonup", "⇀"},
|
||||
{"xrightleftharpoons", "⇌"},
|
||||
{"xmapsto", "↦"},
|
||||
};
|
||||
|
||||
|
||||
static std::map<string, string> latex_to_xml_entities = {
|
||||
{"xleftarrow", "←"},
|
||||
{"xrightarrow", "→"},
|
||||
{"xhookleftarrow", "↩"},
|
||||
{"xhookrightarrow", "↪"},
|
||||
{"xLeftarrow", "⇐"},
|
||||
{"xRightarrow", "⇒"},
|
||||
{"xleftrightarrow", "↔"},
|
||||
{"xLeftrightarrow", "⇔"},
|
||||
{"xleftharpoondown", "↽"},
|
||||
{"xleftharpoonup", "↼"},
|
||||
{"xleftrightharpoons", "⇋"},
|
||||
{"xrightharpoondown", "⇁"},
|
||||
{"xrightharpoonup", "⇀"},
|
||||
{"xrightleftharpoons", "⇌"},
|
||||
{"xmapsto", "↦"},
|
||||
};
|
||||
|
||||
|
||||
void InsetMathXArrow::mathmlize(MathMLStream & ms) const
|
||||
{
|
||||
char const * arrow;
|
||||
std::string arrow;
|
||||
|
||||
if (!ms.xmlMode()) { // Use HTML entities.
|
||||
if (name_ == "xleftarrow")
|
||||
arrow = "←";
|
||||
else if (name_ == "xrightarrow")
|
||||
arrow = "→";
|
||||
else if (name_ == "xhookleftarrow")
|
||||
arrow = "↩";
|
||||
else if (name_ == "xhookrightarrow")
|
||||
arrow = "↪";
|
||||
else if (name_ == "xLeftarrow")
|
||||
arrow = "⇐";
|
||||
else if (name_ == "xRightarrow")
|
||||
arrow = "⇒";
|
||||
else if (name_ == "xleftrightarrow")
|
||||
arrow = "↔";
|
||||
else if (name_ == "xLeftrightarrow")
|
||||
arrow = "⇔";
|
||||
else if (name_ == "xleftharpoondown")
|
||||
arrow = "↽";
|
||||
else if (name_ == "xleftharpoonup")
|
||||
arrow = "↼";
|
||||
else if (name_ == "xleftrightharpoons")
|
||||
arrow = "⇋";
|
||||
else if (name_ == "xrightharpoondown")
|
||||
arrow = "⇁";
|
||||
else if (name_ == "xrightharpoonup")
|
||||
arrow = "⇀";
|
||||
else if (name_ == "xrightleftharpoons")
|
||||
arrow = "⇌";
|
||||
else if (name_ == "xmapsto")
|
||||
arrow = "↦";
|
||||
else {
|
||||
auto mapping = latex_to_html_entities.find(to_ascii(name_));
|
||||
if (mapping != latex_to_html_entities.end()) {
|
||||
arrow = mapping->second;
|
||||
} else {
|
||||
lyxerr << "mathmlize conversion for '" << name_ << "' not implemented" << endl;
|
||||
LASSERT(false, arrow = "→");
|
||||
LASSERT(false, arrow = latex_to_html_entities["xrightarrow"]);
|
||||
}
|
||||
} else { // Use XML entities.
|
||||
if (name_ == "xleftarrow")
|
||||
arrow = "←";
|
||||
else if (name_ == "xrightarrow")
|
||||
arrow = "→";
|
||||
else if (name_ == "xhookleftarrow")
|
||||
arrow = "↩";
|
||||
else if (name_ == "xhookrightarrow")
|
||||
arrow = "↪";
|
||||
else if (name_ == "xLeftarrow")
|
||||
arrow = "⇐";
|
||||
else if (name_ == "xRightarrow")
|
||||
arrow = "⇒";
|
||||
else if (name_ == "xleftrightarrow")
|
||||
arrow = "↔";
|
||||
else if (name_ == "xLeftrightarrow")
|
||||
arrow = "⇔";
|
||||
else if (name_ == "xleftharpoondown")
|
||||
arrow = "↽";
|
||||
else if (name_ == "xleftharpoonup")
|
||||
arrow = "↼";
|
||||
else if (name_ == "xleftrightharpoons")
|
||||
arrow = "⇋";
|
||||
else if (name_ == "xrightharpoondown")
|
||||
arrow = "⇁";
|
||||
else if (name_ == "xrightharpoonup")
|
||||
arrow = "⇀";
|
||||
else if (name_ == "xrightleftharpoons")
|
||||
arrow = "⇌";
|
||||
else if (name_ == "xmapsto")
|
||||
arrow = "↦";
|
||||
else {
|
||||
auto mapping = latex_to_xml_entities.find(to_ascii(name_));
|
||||
if (mapping != latex_to_xml_entities.end()) {
|
||||
arrow = mapping->second;
|
||||
} else {
|
||||
lyxerr << "mathmlize XML conversion for '" << name_ << "' not implemented" << endl;
|
||||
LASSERT(false, arrow = "→");
|
||||
LASSERT(false, arrow = latex_to_xml_entities["xrightarrow"]);
|
||||
}
|
||||
}
|
||||
|
||||
ms << "<" << from_ascii(ms.namespacedTag("munderover")) << " accent='false' accentunder='false'>"
|
||||
<< MTagInline("mo") << arrow << ETagInline("mo")
|
||||
<< MTagInline("mo") << from_ascii(arrow) << ETagInline("mo")
|
||||
<< cell(1) << cell(0)
|
||||
<< "</" << from_ascii(ms.namespacedTag("munderover"))<< ">";
|
||||
}
|
||||
@ -169,45 +153,19 @@ void InsetMathXArrow::mathmlize(MathMLStream & ms) const
|
||||
|
||||
void InsetMathXArrow::htmlize(HtmlStream & os) const
|
||||
{
|
||||
char const * arrow;
|
||||
string arrow;
|
||||
|
||||
if (name_ == "xleftarrow")
|
||||
arrow = "←";
|
||||
else if (name_ == "xrightarrow")
|
||||
arrow = "→";
|
||||
else if (name_ == "xhookleftarrow")
|
||||
arrow = "↩";
|
||||
else if (name_ == "xhookrightarrow")
|
||||
arrow = "↪";
|
||||
else if (name_ == "xLeftarrow")
|
||||
arrow = "⇐";
|
||||
else if (name_ == "xRightarrow")
|
||||
arrow = "⇒";
|
||||
else if (name_ == "xleftrightarrow")
|
||||
arrow = "↔";
|
||||
else if (name_ == "xLeftrightarrow")
|
||||
arrow = "⇔";
|
||||
else if (name_ == "xleftharpoondown")
|
||||
arrow = "↽";
|
||||
else if (name_ == "xleftharpoonup")
|
||||
arrow = "↼";
|
||||
else if (name_ == "xleftrightharpoons")
|
||||
arrow = "⇋";
|
||||
else if (name_ == "xrightharpoondown")
|
||||
arrow = "⇁";
|
||||
else if (name_ == "xrightharpoonup")
|
||||
arrow = "⇀";
|
||||
else if (name_ == "xrightleftharpoons")
|
||||
arrow = "⇌";
|
||||
else if (name_ == "xmapsto")
|
||||
arrow = "↦";
|
||||
else {
|
||||
auto mapping = latex_to_html_entities.find(to_ascii(name_));
|
||||
if (mapping != latex_to_html_entities.end()) {
|
||||
arrow = mapping->second;
|
||||
} else {
|
||||
lyxerr << "htmlize conversion for '" << name_ << "' not implemented" << endl;
|
||||
LASSERT(false, arrow = "→");
|
||||
LASSERT(false, arrow = latex_to_html_entities["xrightarrow"]);
|
||||
}
|
||||
|
||||
os << MTag("span", "class='xarrow'")
|
||||
<< MTag("span", "class='xatop'") << cell(0) << ETag("span")
|
||||
<< MTag("span", "class='xabottom'") << arrow << ETag("span")
|
||||
<< MTag("span", "class='xabottom'") << from_ascii(arrow) << ETag("span")
|
||||
<< ETag("span");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user