added: "this" virtual field for a table (only if the next field is not an object)
cherry picked from b047a10e8d
This commit is contained in:
parent
d9804f05aa
commit
3c969ac5c6
|
@ -372,7 +372,6 @@ private:
|
||||||
bool ShouldMakeSpaceDump(std::vector<Var> & parameters);
|
bool ShouldMakeSpaceDump(std::vector<Var> & parameters);
|
||||||
bool ShouldMakeJsonDump(std::vector<Var> & parameters);
|
bool ShouldMakeJsonDump(std::vector<Var> & parameters);
|
||||||
bool IsPrettyPrint(std::vector<Var> & parameters);
|
bool IsPrettyPrint(std::vector<Var> & parameters);
|
||||||
bool IsCurrentParam(std::vector<Var> & parameters);
|
|
||||||
|
|
||||||
void DumpSpaceIfNeeded(Var & result, std::vector<Var> & parameters, pt::Space * space);
|
void DumpSpaceIfNeeded(Var & result, std::vector<Var> & parameters, pt::Space * space);
|
||||||
void DumpModelIfNeeded(morm::Model & model, Var & result, std::vector<Var> & parameters);
|
void DumpModelIfNeeded(morm::Model & model, Var & result, std::vector<Var> & parameters);
|
||||||
|
@ -1234,13 +1233,6 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::ShouldMak
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
|
||||||
bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::IsCurrentParam(std::vector<Var> & parameters)
|
|
||||||
{
|
|
||||||
return HasParam(parameters, L"current");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
||||||
bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::IsPrettyPrint(std::vector<Var> & parameters)
|
bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::IsPrettyPrint(std::vector<Var> & parameters)
|
||||||
{
|
{
|
||||||
|
@ -1505,19 +1497,6 @@ void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
|
||||||
if( !IsTestingFunctionExistence() )
|
if( !IsTestingFunctionExistence() )
|
||||||
{
|
{
|
||||||
DumpSpaceIfNeeded(result, parameters, space);
|
DumpSpaceIfNeeded(result, parameters, space);
|
||||||
|
|
||||||
if( IsCurrentParam(parameters) )
|
|
||||||
{
|
|
||||||
size_t iterator_value = space_wrapper.get_space_iterator_value(model_wrapper_space_table_index);
|
|
||||||
|
|
||||||
if( iterator_value < table->size() )
|
|
||||||
{
|
|
||||||
//(*table)[iterator_value]->serialize_to_string(out_stream);
|
|
||||||
|
|
||||||
(*table)[iterator_value]->serialize_to_string(result.stream);
|
|
||||||
result.type = Var::TYPE_STREAM;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1580,6 +1559,7 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
|
||||||
pt::Space * space = space_wrapper->get_space();
|
pt::Space * space = space_wrapper->get_space();
|
||||||
//last_res = false;
|
//last_res = false;
|
||||||
size_t field_index = find_helper.field_index;
|
size_t field_index = find_helper.field_index;
|
||||||
|
size_t model_wrapper_space_table_index = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
|
@ -1608,8 +1588,6 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
|
||||||
else
|
else
|
||||||
if( space->is_table() )
|
if( space->is_table() )
|
||||||
{
|
{
|
||||||
size_t model_wrapper_space_table_index = field_index - find_helper.field_index;
|
|
||||||
|
|
||||||
if( model_wrapper_space_table_index < space_wrapper->space_indices_table_size() )
|
if( model_wrapper_space_table_index < space_wrapper->space_indices_table_size() )
|
||||||
{
|
{
|
||||||
if( is_last_field )
|
if( is_last_field )
|
||||||
|
@ -1620,7 +1598,17 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
space = CallSpaceTableForMiddleField(*space_wrapper, *find_helper.fun_name, fields, field_index, space, model_wrapper_space_table_index);
|
space = CallSpaceTableForMiddleField(*space_wrapper, *find_helper.fun_name, fields, field_index, space, model_wrapper_space_table_index);
|
||||||
// don't increment field_index
|
// increment field_index only if next_field is 'this' and space is not an object
|
||||||
|
|
||||||
|
if( space && !space->is_object() )
|
||||||
|
{
|
||||||
|
std::wstring & next_field = fields[field_index];
|
||||||
|
|
||||||
|
if( next_field == L"this" )
|
||||||
|
{
|
||||||
|
field_index += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1650,6 +1638,8 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallSpace
|
||||||
space = nullptr;
|
space = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
model_wrapper_space_table_index += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return space != nullptr;
|
return space != nullptr;
|
||||||
|
|
Loading…
Reference in New Issue