better diagnostic in odf variable handling
authorKonrad Rosenbaum <konrad@silmor.de>
Sat, 24 Mar 2012 12:17:05 +0000 (13:17 +0100)
committerKonrad Rosenbaum <konrad@silmor.de>
Sat, 24 Mar 2012 12:17:05 +0000 (13:17 +0100)
elam
src/misc/msengine.cpp
src/templates/odtrender.cpp

diff --git a/elam b/elam
index 4750ca4..da8f6e9 160000 (submodule)
--- a/elam
+++ b/elam
@@ -1 +1 @@
-Subproject commit 4750ca4eedb881a9f5625ef0133d6e2c91be78dd
+Subproject commit da8f6e919a76ecffcf5f0cb3008237a9135fb4f3
index b8d5425..e71577c 100644 (file)
@@ -22,6 +22,7 @@ MSEngine::MSEngine(QObject* parent)
        BoolEngine::configureBoolEngine(*this);
        BoolEngine::configureLogicEngine(*this);
        FloatEngine::configureFloatEngine(*this);
+       configureReflection(*this);
        setFunction("cent2str",[](const QList<QVariant>&args,Engine&)->QVariant{
                if(args.size()!=1)
                        return Exception(Exception::ArgumentListError,"expected one argument to cent2str");
index adc659f..b0a4fe2 100644 (file)
@@ -33,7 +33,15 @@ class MOdfEngine:public MSEngine
 {
        MOdtRenderer*parent;
        public:
-               MOdfEngine(MOdtRenderer* pa):parent(pa){}
+               MOdfEngine(MOdtRenderer* pa):parent(pa)
+               {
+                       CharacterClassSettings cs=characterClasses();
+                       cs.setAssignmentChars(0,'=');
+                       cs.setOperatorClass(cs.operatorClass().remove(':'));
+                       QPair<QString,QString>nc=cs.nameClass();
+                       nc.second+=':';
+                       cs.setNameClass(nc);
+               }
                bool hasConstant(QString v)const
                {
                        if(parent->getVariable(v).isValid())
@@ -123,9 +131,10 @@ MOdtRendererPrivate::MOdtRendererPrivate(QString file,MOdtRenderer*p)
        QBuffer buffer;
        buffer.open(QBuffer::ReadWrite);
        temp.getCurrentFile(buffer);
-       QString err;int errln,errcl;
+       QString err;int errln=-1,errcl=-1;
        bool dov1=false;
        const QString tpename=OdfTemplatePrefix+":template";
+       buffer.seek(0);
        if(!cdoc.setContent(&buffer,false,&err,&errln,&errcl)){
                qDebug()<<"Hmm, not XML, trying version 1 converter...";
                qDebug()<<" Info: line ="<<errln<<"column ="<<errcl<<"error ="<<err;
@@ -159,8 +168,9 @@ MOdtRenderer::~MOdtRenderer()
 {
        if(d==nullptr)return;
        if(d->calc!=nullptr)delete d->calc;
+       d->calc=nullptr;
        delete d;
-       d=0;
+       d=nullptr;
 }
 MOdtRendererPrivate::~MOdtRendererPrivate()
 {