mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: allow '^' as anchor for dictionary scoping (issue #429)
- The existing ':' anchor works for rvalue substitutions
(Eg, ${:subdict.name}), but fails for lvalues, since it is
a punctuation token and parse stops there.
This commit is contained in:
@ -34,15 +34,16 @@ update
|
||||
key2 $key1;
|
||||
key3 val3;
|
||||
key2b ${..key2};
|
||||
key3b ${:key1};
|
||||
key3b $^key1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$update
|
||||
|
||||
key3 ${:subdict.key1};
|
||||
key3 ${:update.subdict.key3};
|
||||
// Can a leading '^' or ':' as anchor for scoping
|
||||
key3 $^subdict.key1;
|
||||
key3 ${^update.subdict.key3};
|
||||
key4 ${:update.subdict...subdict.key1};
|
||||
|
||||
// This is currently not working
|
||||
|
||||
@ -575,7 +575,7 @@ const Foam::entry* Foam::dictionary::lookupScopedEntryPtr
|
||||
bool patternMatch
|
||||
) const
|
||||
{
|
||||
if (keyword[0] == ':')
|
||||
if (keyword[0] == ':' || keyword[0] == '^')
|
||||
{
|
||||
// Go up to top level
|
||||
const dictionary* dictPtr = this;
|
||||
|
||||
@ -43,7 +43,7 @@ Note
|
||||
Within dictionaries, entries can be referenced by using the '$' syntax
|
||||
familiar from shell programming. A '.' separator is used when referencing
|
||||
sub-dictionary entries. Leading '.' prefixes can be used to specify
|
||||
an entry from a parent directory. A leading ':' prefix specifies
|
||||
an entry from a parent directory. A leading ':' or '^' prefix specifies
|
||||
starting from the top-level entry. For example,
|
||||
|
||||
\verbatim
|
||||
@ -62,7 +62,7 @@ Note
|
||||
}
|
||||
}
|
||||
|
||||
key4 $:subdict1.subdict2.key3;
|
||||
key4 $^subdict1.subdict2.key3; // lookup with absolute scoping
|
||||
\endverbatim
|
||||
|
||||
It is also possible to use the '${}' syntax for clarity.
|
||||
|
||||
Reference in New Issue
Block a user