]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/MathExtern.cpp
Fixed longstanding bug in Advanced Find&Replace, when dealing with documents containi...
[lyx.git] / src / mathed / MathExtern.cpp
index f9b9f42af2d9a1af304fc4c0e07fbef13adf3903..8d1df06f777ee1e78b3bfa8df57c035d5c939e6f 100644 (file)
@@ -54,6 +54,7 @@ namespace lyx {
 namespace {
 
 enum ExternalMath {
+       HTML,
        MAPLE,
        MAXIMA,
        MATHEMATICA,
@@ -120,7 +121,7 @@ MathData::iterator extractArgument(MathData & ar,
                // leave out delimiters if this is a function argument
                // unless we are doing MathML, in which case we do want
                // the delimiters
-               if (function && kind != MATHML) {
+               if (function && kind != MATHML && kind != HTML) {
                        MathData const & arg = (*pos)->asDelimInset()->cell(0);
                        MathData::const_iterator cur = arg.begin();
                        MathData::const_iterator end = arg.end();
@@ -948,21 +949,22 @@ void extractLims(MathData & ar)
 void extractStructure(MathData & ar, ExternalMath kind)
 {
        //lyxerr << "\nStructure from: " << ar << endl;
-       if (kind != MATHML)
+       if (kind != MATHML && kind != HTML)
                splitScripts(ar);
        extractDelims(ar);
        extractIntegrals(ar, kind);
-       if (kind != MATHML)
+       if (kind != MATHML && kind != HTML)
                extractSums(ar);
        extractNumbers(ar);
        extractMatrices(ar);
        extractFunctions(ar, kind);
-       extractDets(ar);
-       extractDiff(ar);
-       extractExps(ar);
-       extractLims(ar);
-       if (kind != MATHML)
+       if (kind != MATHML && kind != HTML) {
+               extractDets(ar);
+               extractDiff(ar);
+               extractExps(ar);
+               extractLims(ar);
                extractStrings(ar);
+       }
        //lyxerr << "\nStructure to: " << ar << endl;
 }
 
@@ -1429,6 +1431,22 @@ void mathmlize(MathData const & dat, MathStream & os)
        }
 }
 
+
+void htmlize(MathData const & dat, HtmlStream & os)
+{
+       MathData ar = dat;
+       extractStructure(ar, HTML);
+       if (ar.size() == 0) 
+               return;
+       if (ar.size() == 1) {
+               os << ar.front();
+               return;
+       }
+       for (MathData::const_iterator it = ar.begin(); it != ar.end(); ++it)
+               (*it)->htmlize(os);
+}
+
+
 // convert this inset somehow to a number
 bool extractNumber(MathData const & ar, int & i)
 {
@@ -1478,7 +1496,7 @@ MathData pipeThroughExtern(string const & lang, docstring const & extra,
        }
 
        // run external sript
-       string out = captureOutput(file.absFilename(), data);
+       string out = captureOutput(file.absFileName(), data);
        MathData res;
        mathed_parse_cell(res, from_utf8(out));
        return res;