add two new ezc statements: [if-def ...] and [if-not-def ...]
[if-def my_function] returns true if my_function is defined somewhere (either a model, model container, space, date, block, function or variable) add support for "noescape" or "raw" parameters to Space fields fixed: CallWrapper() didn't return a status if a model/space/date/container was found
This commit is contained in:
@@ -745,6 +745,35 @@ void PatternParser::ReadDirectiveIf(Item & item)
|
||||
}
|
||||
|
||||
|
||||
void PatternParser::ReadDirectiveIfDef(Item & item)
|
||||
{
|
||||
item.type = Item::item_if_def;
|
||||
|
||||
if( ReadFunction(item) )
|
||||
{
|
||||
if( !item.function.is_function || item.function.parameters.size() > 0 )
|
||||
{
|
||||
item.type = Item::item_err;
|
||||
item.function.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PatternParser::ReadDirectiveIfNotDef(Item & item)
|
||||
{
|
||||
item.type = Item::item_if_not_def;
|
||||
|
||||
if( ReadFunction(item) )
|
||||
{
|
||||
if( !item.function.is_function || item.function.parameters.size() > 0 )
|
||||
{
|
||||
item.type = Item::item_err;
|
||||
item.function.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void PatternParser::ReadDirectiveEnd(Item & item)
|
||||
{
|
||||
@@ -991,6 +1020,8 @@ std::wstring name;
|
||||
ReadName(name);
|
||||
|
||||
if ( name == L"if" ) ReadDirectiveIf(item);
|
||||
else if( name == L"if-def" ) ReadDirectiveIfDef(item);
|
||||
else if( name == L"if-not-def" )ReadDirectiveIfNotDef(item);
|
||||
else if( name == L"end" ) ReadDirectiveEnd(item);
|
||||
else if( name == L"else" ) ReadDirectiveElse(item);
|
||||
else if( name == L"for" ) ReadDirectiveFor(item);
|
||||
@@ -1325,7 +1356,7 @@ bool PatternParser::CreateTree(Item & item)
|
||||
if( item.type == Item::item_container )
|
||||
CreateTreeContainer(item);
|
||||
|
||||
if( item.type == Item::item_if )
|
||||
if( item.type == Item::item_if || item.type == Item::item_if_def || item.type == Item::item_if_not_def )
|
||||
CreateTreeReadIf(item); // reads one child or two if [else] statement is present
|
||||
|
||||
if( item.type == Item::item_for ||
|
||||
|
Reference in New Issue
Block a user