Skip to content

Commit 253a2c2

Browse files
committed
Added a new structure expansion token <STRUCTURE_FIRST_UNIQUE_KEY>.
1 parent ab296ed commit 253a2c2

File tree

4 files changed

+19
-0
lines changed

4 files changed

+19
-0
lines changed

CodeGenEngine/TokenExpanders/TokenExpanderStructure.dbl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ namespace CodeGen.Engine
8787
structureTokenExpanders.Add("STRUCTURE_DESC", expandStructureDesc)
8888
structureTokenExpanders.Add("STRUCTURE_FIELDS", expandStructureFields)
8989
structureTokenExpanders.Add("STRUCTURE_FILES", expandStructureFiles)
90+
structureTokenExpanders.Add("STRUCTURE_FIRST_UNIQUE_KEY", expandStructureFirstUniqueKey)
9091
structureTokenExpanders.Add("STRUCTURE_KEYS", expandStructureKeys)
9192
structureTokenExpanders.Add("STRUCTURE_LDESC", expandStructureLongDescription)
9293
structureTokenExpanders.Add("STRUCTURE_NAME", expandStructureName)
@@ -667,6 +668,23 @@ namespace CodeGen.Engine
667668
mreturn ExpandStructureToken(tkn, template, loops, doExpand)
668669
endmethod
669670

671+
private static method expandStructureFirstUniqueKey, string
672+
tkn, @Token
673+
template, @FileNode
674+
loops, @IEnumerable<LoopNode>
675+
endparams
676+
proc
677+
lambda doExpand(str)
678+
begin
679+
data thekey, @RpsKey, str.Keys.FirstOrDefault(lambda (k) {k.Duplicates == RpsKeyDuplicates.NoDuplicates})
680+
if (thekey == ^null) then
681+
mreturn ""
682+
else
683+
mreturn thekey.KeyOfReference.ToString()
684+
end
685+
mreturn ExpandStructureToken(tkn, template, loops, doExpand)
686+
endmethod
687+
670688
private static method expandStructureKeys, string
671689
tkn, @Token
672690
template, @FileNode

CodeGenEngine/Tokenizer.dbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ namespace CodeGen.Engine
261261
& { new TokenMeta() {Name = "STRUCTURE_DESC", TypeOfToken = TokenType.StructureInfo, IsPaired = false, Validity = TokenValidity.Anywhere, RequiresRepository = true} },
262262
& { new TokenMeta() {Name = "STRUCTURE_FIELDS", TypeOfToken = TokenType.StructureInfo, IsPaired = false, Validity = TokenValidity.Anywhere, RequiresRepository = true} },
263263
& { new TokenMeta() {Name = "STRUCTURE_FILES", TypeOfToken = TokenType.StructureInfo, IsPaired = false, Validity = TokenValidity.Anywhere, RequiresRepository = true} },
264+
& { new TokenMeta() {Name = "STRUCTURE_FIRST_UNIQUE_KEY", TypeOfToken = TokenType.StructureInfo, IsPaired = false, Validity = TokenValidity.Anywhere, RequiresRepository = true} },
264265
& { new TokenMeta() {Name = "STRUCTURE_KEYS", TypeOfToken = TokenType.StructureInfo, IsPaired = false, Validity = TokenValidity.Anywhere, RequiresRepository = true} },
265266
& { new TokenMeta() {Name = "STRUCTURE_LDESC", TypeOfToken = TokenType.StructureInfo, IsPaired = false, Validity = TokenValidity.Anywhere, RequiresRepository = true} },
266267
& { makeTokenMeta_AllVariants("STRUCTURE_NAME", TokenType.StructureInfo, TokenValidity.Anywhere, true) },

Documentation/CodeGen.chm

566 Bytes
Binary file not shown.

Documentation/CodeGen.hsmx

990 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)