X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fobjects%2Fcalendarobject%2FCalendarObject.cpp;h=f5fc97ea697f1b957ec32aae494c04c6862c3a64;hb=52069b98994d3695c73f4b22d2ea66a04fdda2cf;hp=d3c6f14cf7385939b91f79b2d51e7887a47ce5fe;hpb=e9da688490068209f433022a0d7b0c182ab7569e;p=xestiacalendar%2F.git diff --git a/source/objects/calendarobject/CalendarObject.cpp b/source/objects/calendarobject/CalendarObject.cpp index d3c6f14..f5fc97e 100644 --- a/source/objects/calendarobject/CalendarObject.cpp +++ b/source/objects/calendarobject/CalendarObject.cpp @@ -52,6 +52,7 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) bool NewLine = false; bool SkipMode = false; bool ColonFound = false; + bool QuoteMode = false; char BufferChar = 0; int StringDataSize = LoadStringData->size(); int SeekCount = 0; @@ -73,6 +74,22 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) NewLine = false; + } else if ((*LoadStringData)[SeekCount] == '\"'){ + + if (QuoteMode == false){ + QuoteMode = true; + } else { + QuoteMode = false; + } + + BufferChar = (*LoadStringData)[SeekCount]; + + if (ColonFound == false){ + PropertyName += BufferChar; + } else { + PropertyValue += BufferChar; + } + } else if (NewLine == true){ // Character is on a new line but not a space or @@ -81,8 +98,8 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) // the lists. if (ColonFound == true){ - ObjectName.insert(ObjectName.end(), PropertyName); - ObjectData.insert(ObjectData.end(), PropertyValue); + ObjectName.push_back(PropertyName); + ObjectData.push_back(PropertyValue); } ColonFound = false; @@ -100,12 +117,19 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) NewLine = true; - } else if ((*LoadStringData)[SeekCount] == ':'){ + } else if ((*LoadStringData)[SeekCount] == ':' && + QuoteMode == false){ // Character is the colon. Set the colon // found boolen to true. - ColonFound = true; + BufferChar = (*LoadStringData)[SeekCount]; + + if (ColonFound == true){ + PropertyValue += BufferChar; + } else { + ColonFound = true; + } } else { @@ -133,8 +157,8 @@ CalendarObjectLoadResult CalendarObject::LoadString(std::string *LoadStringData) PropertyName.size() > 0 && PropertyValue.size() > 0){ - ObjectName.insert(ObjectName.end(), PropertyName); - ObjectData.insert(ObjectData.end(), PropertyValue); + ObjectName.push_back(PropertyName); + ObjectData.push_back(PropertyValue); } @@ -282,7 +306,7 @@ void CalendarObject::ProcessBaseData(){ } - // Get the method (CALSCALE). + // Get the calendar scale (CALSCALE). DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "CALSCALE");