Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
yaml-cpp
Commits
2160bb2b
Commit
2160bb2b
authored
Jul 25, 2009
by
Jesse Beder
Browse files
Fixed bug with simple keys that are quoted scalars
parent
946d3260
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
260 additions
and
224 deletions
+260
-224
src/scantoken.cpp
src/scantoken.cpp
+7
-2
yaml-reader/parsertests.cpp
yaml-reader/parsertests.cpp
+251
-222
yaml-reader/tests.cpp
yaml-reader/tests.cpp
+1
-0
yaml-reader/tests.h
yaml-reader/tests.h
+1
-0
No files found.
src/scantoken.cpp
View file @
2160bb2b
...
...
@@ -309,8 +309,8 @@ namespace YAML
{
std
::
string
scalar
;
//
e
at single or double quote
char
quote
=
INPUT
.
get
();
//
peek
at single or double quote
(don't eat because we need to preserve (for the time being) the input position)
char
quote
=
INPUT
.
peek
();
bool
single
=
(
quote
==
'\''
);
// setup the scanning parameters
...
...
@@ -330,6 +330,11 @@ namespace YAML
InsertSimpleKey
();
int
line
=
INPUT
.
line
,
column
=
INPUT
.
column
;
// now eat that opening quote
INPUT
.
get
();
// and scan
scalar
=
ScanScalar
(
INPUT
,
params
);
m_simpleKeyAllowed
=
false
;
...
...
yaml-reader/parsertests.cpp
View file @
2160bb2b
#include "tests.h"
#include "yaml.h"
#include <sstream>
#include <algorithm>
namespace
Test
{
...
...
@@ -218,5 +219,33 @@ namespace Test
return
true
;
}
bool
QuotedSimpleKeys
()
{
std
::
string
KeyValue
[
3
]
=
{
"
\"
double
\"
: double
\n
"
,
"'single': single
\n
"
,
"plain: plain
\n
"
};
int
perm
[
3
]
=
{
0
,
1
,
2
};
do
{
std
::
string
input
=
KeyValue
[
perm
[
0
]]
+
KeyValue
[
perm
[
1
]]
+
KeyValue
[
perm
[
2
]];
std
::
stringstream
stream
(
input
);
YAML
::
Parser
parser
(
stream
);
YAML
::
Node
doc
;
parser
.
GetNextDocument
(
doc
);
std
::
string
output
;
doc
[
"double"
]
>>
output
;
if
(
output
!=
"double"
)
return
false
;
doc
[
"single"
]
>>
output
;
if
(
output
!=
"single"
)
return
false
;
doc
[
"plain"
]
>>
output
;
if
(
output
!=
"plain"
)
return
false
;
}
while
(
std
::
next_permutation
(
perm
,
perm
+
3
));
return
true
;
}
}
}
yaml-reader/tests.cpp
View file @
2160bb2b
...
...
@@ -262,6 +262,7 @@ namespace Test
RunParserTest
(
&
Parser
::
SimpleMap
,
"simple map"
,
passed
);
RunParserTest
(
&
Parser
::
FlowSeq
,
"flow seq"
,
passed
);
RunParserTest
(
&
Parser
::
FlowMap
,
"flow map"
,
passed
);
RunParserTest
(
&
Parser
::
QuotedSimpleKeys
,
"quoted simple keys"
,
passed
);
RunEncodingTest
(
&
EncodeToUtf8
,
false
,
"UTF-8, no BOM"
,
passed
);
RunEncodingTest
(
&
EncodeToUtf8
,
true
,
"UTF-8 with BOM"
,
passed
);
...
...
yaml-reader/tests.h
View file @
2160bb2b
...
...
@@ -28,6 +28,7 @@ namespace Test {
bool
SimpleMap
();
bool
FlowSeq
();
bool
FlowMap
();
bool
QuotedSimpleKeys
();
}
namespace
Emitter
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment