mirror of
https://github.com/libAthena/athena.git
synced 2025-06-07 07:03:36 +00:00
Sequence to mapping-val lowering
This commit is contained in:
parent
09033d90cc
commit
4d1c71ba3a
@ -836,6 +836,8 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline YAMLNode* getCurNode() const {return m_subStack.empty() ? nullptr : m_subStack.back();}
|
||||||
|
|
||||||
void enterSubRecord(const char* name)
|
void enterSubRecord(const char* name)
|
||||||
{
|
{
|
||||||
YAMLNode* curSub = m_subStack.back();
|
YAMLNode* curSub = m_subStack.back();
|
||||||
@ -855,17 +857,26 @@ public:
|
|||||||
if (m_subStack.size() > 1)
|
if (m_subStack.size() > 1)
|
||||||
{
|
{
|
||||||
YAMLNode* curSub = m_subStack.back();
|
YAMLNode* curSub = m_subStack.back();
|
||||||
/* Automatically lower to scalar if there's only one unnamed node */
|
/* Automatically lower to scalar or sequence if there's only one unnamed node */
|
||||||
if (curSub->m_mapChildren.size() == 1 &&
|
if (curSub->m_mapChildren.size() == 1 &&
|
||||||
curSub->m_mapChildren[0].first.empty())
|
curSub->m_mapChildren[0].first.empty())
|
||||||
{
|
{
|
||||||
auto& item = curSub->m_mapChildren[0];
|
auto& item = curSub->m_mapChildren[0];
|
||||||
if (item.first.empty() && item.second->m_type == YAML_SCALAR_NODE)
|
if (item.first.empty())
|
||||||
|
{
|
||||||
|
if (item.second->m_type == YAML_SCALAR_NODE)
|
||||||
{
|
{
|
||||||
curSub->m_type = YAML_SCALAR_NODE;
|
curSub->m_type = YAML_SCALAR_NODE;
|
||||||
curSub->m_scalarString = std::move(item.second->m_scalarString);
|
curSub->m_scalarString = std::move(item.second->m_scalarString);
|
||||||
curSub->m_mapChildren.clear();
|
curSub->m_mapChildren.clear();
|
||||||
}
|
}
|
||||||
|
else if (item.second->m_type == YAML_SEQUENCE_NODE)
|
||||||
|
{
|
||||||
|
curSub->m_type = YAML_SEQUENCE_NODE;
|
||||||
|
curSub->m_seqChildren = std::move(item.second->m_seqChildren);
|
||||||
|
curSub->m_mapChildren.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_subStack.pop_back();
|
m_subStack.pop_back();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user