fixed: set find_helper.found=true in CallSpaceWrapper() and CallSpace()

This commit is contained in:
Tomasz Sowa 2021-12-09 13:30:09 +01:00
parent 973f05cc08
commit b9f1fa913e
1 changed files with 16 additions and 13 deletions

View File

@ -1445,7 +1445,6 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
{ {
pt::Space * space = space_wrapper.get_space(); pt::Space * space = space_wrapper.get_space();
size_t model_wrapper_space_table_index = 0; size_t model_wrapper_space_table_index = 0;
//space_wrapper.set_last_for_loop_status(false);
while( find_helper.is_next_field() ) while( find_helper.is_next_field() )
{ {
@ -1462,7 +1461,6 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
else else
{ {
// may this is a global function so return true // may this is a global function so return true
//find_helper.found = false; // set find_helper.found here?
return true; return true;
} }
} }
@ -1480,6 +1478,7 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
if( space->table_size() > 0 ) if( space->table_size() > 0 )
{ {
find_helper.result->set(*space->value.value_table.front(), false); find_helper.result->set(*space->value.value_table.front(), false);
find_helper.found = true;
return true; return true;
} }
else else
@ -1496,6 +1495,7 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
if( space->table_size() > 0 ) if( space->table_size() > 0 )
{ {
find_helper.result->set(*space->value.value_table.back(), false); find_helper.result->set(*space->value.value_table.back(), false);
find_helper.found = true;
return true; return true;
} }
else else
@ -1513,6 +1513,7 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
// a [for ...] was not used beforehand // a [for ...] was not used beforehand
// return true, this can be a global method such as 'size' // return true, this can be a global method such as 'size'
find_helper.result->set(*space, false); find_helper.result->set(*space, false);
find_helper.found = true;
return true; return true;
} }
@ -1528,8 +1529,8 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
find_helper.field_index += 1; find_helper.field_index += 1;
size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index); size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index);
find_helper.result->set(static_cast<unsigned long long>(iterator_value)); find_helper.result->set(static_cast<unsigned long long>(iterator_value));
find_helper.found = true;
return true; return true;
break;
} }
else else
if( next_field == L"index-one" ) if( next_field == L"index-one" )
@ -1537,8 +1538,8 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
find_helper.field_index += 1; find_helper.field_index += 1;
size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index); size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index);
find_helper.result->set(static_cast<unsigned long long>(iterator_value + 1)); find_helper.result->set(static_cast<unsigned long long>(iterator_value + 1));
find_helper.found = true;
return true; return true;
break;
} }
else else
if( next_field == L"is_first" ) if( next_field == L"is_first" )
@ -1546,8 +1547,8 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
find_helper.field_index += 1; find_helper.field_index += 1;
size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index); size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index);
find_helper.result->set(iterator_value == 0); find_helper.result->set(iterator_value == 0);
find_helper.found = true;
return true; return true;
break;
} }
else else
if( next_field == L"is_last" ) if( next_field == L"is_last" )
@ -1555,8 +1556,8 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
find_helper.field_index += 1; find_helper.field_index += 1;
size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index); size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index);
find_helper.result->set(iterator_value + 1 == space->table_size()); find_helper.result->set(iterator_value + 1 == space->table_size());
find_helper.found = true;
return true; return true;
break;
} }
else else
{ {
@ -1580,6 +1581,8 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
model_wrapper_space_table_index += 1; model_wrapper_space_table_index += 1;
} }
find_helper.found = true;
if( space->is_table() ) if( space->is_table() )
{ {
CallSpaceTableForLastField(space_wrapper, *space, find_helper, model_wrapper_space_table_index); CallSpaceTableForLastField(space_wrapper, *space, find_helper, model_wrapper_space_table_index);
@ -1590,7 +1593,7 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
//PrintLastSpaceField(*space, find_helper); //PrintLastSpaceField(*space, find_helper);
find_helper.result->set(*space, false); // WARNING here a new space wrapper will be created, need to invastigate find_helper.result->set(*space, false); // WARNING here a new space wrapper will be created, need to invastigate
if( find_helper.is_last_field() ) if( find_helper.is_last_field() ) // find_index will be incremented and the result is always false here
DumpSpaceIfNeeded(*space, find_helper); DumpSpaceIfNeeded(*space, find_helper);
} }
@ -1608,8 +1611,8 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
{ {
if( space->is_object() ) if( space->is_object() )
{ {
const std::wstring & next_field = find_helper.fields[find_helper.field_index - 1]; const std::wstring & current_field = find_helper.fields[find_helper.field_index - 1];
pt::Space * next_space = space->get_space(next_field); pt::Space * next_space = space->get_space(current_field);
if( next_space ) if( next_space )
{ {
@ -1618,8 +1621,6 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
} }
else else
{ {
// may this is a global function so return true
//find_helper.found = false; // set find_helper.found here?
return true; return true;
} }
} }
@ -1637,6 +1638,8 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
} }
} }
find_helper.found = true;
if( space->is_table() ) if( space->is_table() )
{ {
// CreateMsg(L"you cannot iterate through space table when the space is added without a wrapper"); // IMPROVE the message // CreateMsg(L"you cannot iterate through space table when the space is added without a wrapper"); // IMPROVE the message
@ -1650,7 +1653,7 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
//PrintLastSpaceField(*space, find_helper); //PrintLastSpaceField(*space, find_helper);
find_helper.result->set(*space, false); find_helper.result->set(*space, false);
if( find_helper.is_last_field() ) if( find_helper.is_last_field() ) // !! find_index was incremented and here find_index is greater than fields.size(), this returns false
DumpSpaceIfNeeded(*space, find_helper); DumpSpaceIfNeeded(*space, find_helper);
} }
@ -1984,7 +1987,7 @@ void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::FindVaria
} }
else else
{ {
if( find_helper.is_last_field() ) if( find_helper.is_last_field() ) // find_index was incremented and is greater than fields.size(), this returns false
{ {
find_helper.result->clear(); find_helper.result->clear();
} }