diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/stable/string.cpp | 24 | ||||
| -rw-r--r-- | src/stable/string.h | 1 | ||||
| -rw-r--r-- | src/unit/string.unit | 5 |
3 files changed, 28 insertions, 2 deletions
diff --git a/src/stable/string.cpp b/src/stable/string.cpp index d1f76aa..dd484fd 100644 --- a/src/stable/string.cpp +++ b/src/stable/string.cpp | |||
| @@ -1269,10 +1269,30 @@ Bu::String Bu::String::FormatProxy::end() const | |||
| 1269 | else | 1269 | else |
| 1270 | { | 1270 | { |
| 1271 | String sNum; | 1271 | String sNum; |
| 1272 | while( s && *s >= '0' && *s <= '9' ) | 1272 | if( *s == '{' ) |
| 1273 | { | 1273 | { |
| 1274 | sNum += *s; | ||
| 1275 | s++; | 1274 | s++; |
| 1275 | while( s && *s >= '0' && *s <= '9' ) | ||
| 1276 | { | ||
| 1277 | sNum += *s; | ||
| 1278 | s++; | ||
| 1279 | } | ||
| 1280 | if( !s || *s != '}' ) | ||
| 1281 | { | ||
| 1282 | delete[] aArg; | ||
| 1283 | throw Bu::ExceptionBase( | ||
| 1284 | "Argument started with a '{' but terminated " | ||
| 1285 | "with a '%c' instead of '}'.", *s ); | ||
| 1286 | } | ||
| 1287 | s++; | ||
| 1288 | } | ||
| 1289 | else | ||
| 1290 | { | ||
| 1291 | while( s && *s >= '0' && *s <= '9' ) | ||
| 1292 | { | ||
| 1293 | sNum += *s; | ||
| 1294 | s++; | ||
| 1295 | } | ||
| 1276 | } | 1296 | } |
| 1277 | int iIndex = strtol( sNum.getStr(), 0, 10 )-1; | 1297 | int iIndex = strtol( sNum.getStr(), 0, 10 )-1; |
| 1278 | if( iIndex < 0 || iIndex >= iCount ) | 1298 | if( iIndex < 0 || iIndex >= iCount ) |
diff --git a/src/stable/string.h b/src/stable/string.h index c92a704..197821d 100644 --- a/src/stable/string.h +++ b/src/stable/string.h | |||
| @@ -950,6 +950,7 @@ namespace Bu | |||
| 950 | class FormatProxyEndAction | 950 | class FormatProxyEndAction |
| 951 | { | 951 | { |
| 952 | public: | 952 | public: |
| 953 | virtual ~FormatProxyEndAction() { }; | ||
| 953 | virtual void operator()( const Bu::String &sFinal )=0; | 954 | virtual void operator()( const Bu::String &sFinal )=0; |
| 954 | }; | 955 | }; |
| 955 | 956 | ||
diff --git a/src/unit/string.unit b/src/unit/string.unit index dfa0c38..4ea878e 100644 --- a/src/unit/string.unit +++ b/src/unit/string.unit | |||
| @@ -581,6 +581,11 @@ suite String | |||
| 581 | unitTest( (Bu::String)Bu::String("%1%2").arg("IQ").arg(4, Bu::Fmt().plus()) == "IQ+4" ); | 581 | unitTest( (Bu::String)Bu::String("%1%2").arg("IQ").arg(4, Bu::Fmt().plus()) == "IQ+4" ); |
| 582 | unitTest( (Bu::String)Bu::String("Sup #%1-Guy!").arg( 1 ) == "Sup #1-Guy!" ); | 582 | unitTest( (Bu::String)Bu::String("Sup #%1-Guy!").arg( 1 ) == "Sup #1-Guy!" ); |
| 583 | } | 583 | } |
| 584 | |||
| 585 | test format2 | ||
| 586 | { | ||
| 587 | unitTest( Bu::String("0x%{1}00").arg( 75, Bu::Fmt::hex() ).end() == "0x4B00" ); | ||
| 588 | } | ||
| 584 | } | 589 | } |
| 585 | // 03F09CA4F58AC8CA0E80F0D9D409D0A60700A192270004BC3A99E91D0001034F544603362E35013103313130019CA4F58AC8CA0E0002830800002C4200008AC200EBF7D9D4090127BB010000E3 | 590 | // 03F09CA4F58AC8CA0E80F0D9D409D0A60700A192270004BC3A99E91D0001034F544603362E35013103313130019CA4F58AC8CA0E0002830800002C4200008AC200EBF7D9D4090127BB010000E3 |
| 586 | // | 591 | // |
