Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <boost/regex.hpp>
00016
00017
00018 #include "Fireworks/Core/src/expressionFormatHelpers.h"
00019
00020
00021
00022
00023
00024
00025 namespace fireworks {
00026 namespace expression {
00027 std::string oldToNewFormat(const std::string& iExpression) {
00028
00029 const std::string variable;
00030 static boost::regex const reVarName("(\\$\\.)|(\\(\\))");
00031
00032 return boost::regex_replace(iExpression,reVarName,variable);
00033 }
00034
00035 long indexFromNewFormatToOldFormat(const std::string& iNewFormat,
00036 long iNewFormatIndex,
00037 const std::string& iOldFormat)
00038 {
00039 if(iNewFormat.substr(0,iNewFormatIndex) ==
00040 iOldFormat.substr(0,iNewFormatIndex)) {
00041 return iNewFormatIndex;
00042 }
00043 assert(iNewFormat.size()< iOldFormat.size());
00044 std::string::const_iterator itNew = iNewFormat.begin(), itOld = iOldFormat.begin(),
00045 itNewEnd = iNewFormat.end();
00046 for(;
00047 itNew != itNewEnd && itNew-iNewFormat.begin() < iNewFormatIndex;
00048 ++itNew, ++itOld) {
00049 while(*itNew != *itOld) {
00050 assert(itOld != iOldFormat.end());
00051 ++itOld;
00052 }
00053 }
00054 return itOld - iOldFormat.begin();
00055 }
00056 }
00057 }