+#include <config.h>
+
#ifdef __GNUG__
#pragma implementation
#endif
-#include <cctype>
-
#include "math_stringinset.h"
+#include "math_mathmlstream.h"
+#include "math_streamstr.h"
#include "LColor.h"
#include "Painter.h"
-#include "support/LOstream.h"
-#include "support.h"
+#include "math_support.h"
#include "math_parser.h"
#include "debug.h"
+#include <cctype>
+
+
+MathStringInset::MathStringInset()
+ : str_(), code_(LM_TC_MIN)
+{}
MathStringInset::MathStringInset(string const & s, MathTextCodes t)
: str_(s), code_(t)
}
-void MathStringInset::write(MathWriteInfo & os) const
+void MathStringInset::normalize(NormalStream & os) const
{
- if (math_font_name(code_))
- os << '\\' << math_font_name(code_) << '{' << str_ << '}';
- else
- os << str_;
+ os << "[string " << str_ << ' ' << "mathalpha" << "]";
}
-void MathStringInset::writeNormal(std::ostream & os) const
+void MathStringInset::maplize(MapleStream & os) const
{
- os << "[string " << str_ << " " << "mathalpha" << "]";
+ if (code_ != LM_TC_VAR || str_.size() <= 1) {
+ os << ' ' << str_ << ' ';
+ return;
+ }
+
+ // insert '*' between adjacent chars if type is LM_TC_VAR
+ os << str_[0];
+ for (string::size_type i = 1; i < str_.size(); ++i)
+ os << '*' << str_[i];
}
-string MathStringInset::octavize() const
+void MathStringInset::octavize(OctaveStream & os) const
{
- return maplize();
+ if (code_ != LM_TC_VAR || str_.size() <= 1) {
+ os << ' ' << str_ << ' ';
+ return;
+ }
+
+ // insert '*' between adjacent chars if type is LM_TC_VAR
+ os << str_[0];
+ for (string::size_type i = 1; i < str_.size(); ++i)
+ os << '*' << str_[i];
}
-string MathStringInset::maplize() const
+void MathStringInset::mathmlize(MathMLStream & os) const
{
- if (code_ != LM_TC_VAR)
- return str_;
- if (str_.size() <= 1)
- return str_;
- string res;
+ if (code_ == LM_TC_VAR)
+ os << "<mi> " << str_ << " </mi>";
+ else if (code_ == LM_TC_CONST)
+ os << "<mn> " << str_ << " </mn>";
+ else if (code_ == LM_TC_RM || code_ == LM_TC_TEXTRM)
+ os << "<mtext> " << str_ << " </mtext>";
+ else
+ os << str_;
+}
- // insert '*' between adjacent chars if type is LM_TC_VAR
- res += str_[0];
- for (string::size_type i = 1; i < str_.size(); ++i) {
- res += '*';
- res += str_[i];
- }
- return res;
+
+void MathStringInset::write(WriteStream & os) const
+{
+ if (math_font_name(code_))
+ os << '\\' << math_font_name(code_) << '{' << str_ << '}';
+ else
+ os << str_;
}