Skip to content

Commit 6ec0dca

Browse files
committed
Added and documented a key loop expression token named \<IF LITERAL_SEGMENTS\> that indicates whether the key being processed in a key loop includes one or more literal value segments.
1 parent 4512fc4 commit 6ec0dca

4 files changed

Lines changed: 12 additions & 0 deletions

File tree

CodeGenEngine/ExpressionEvaluators/ExpressionEvaluatorKeyLoop.dbl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ namespace CodeGen.Engine
7373
keyLoopExpressionEvaluators.Add("DUPLICATESATFRONT", evaluateKeyDuplicatesAtFront)
7474
keyLoopExpressionEvaluators.Add("FIRST_SEG_NOCASE", evaluateKeyFirstSegNoCase)
7575
keyLoopExpressionEvaluators.Add("FIRST_UNIQUE_KEY", evaluateKeyFirstUnique)
76+
keyLoopExpressionEvaluators.Add("LITERAL_SEGMENTS", evaluateKeyLiteralSegments)
7677
keyLoopExpressionEvaluators.Add("MULTIPLE_SEGMENTS", evaluateKeyMultipleSegments)
7778
keyLoopExpressionEvaluators.Add("NOCHANGES", evaluateKeyNoChanges)
7879
keyLoopExpressionEvaluators.Add("NODUPLICATES", evaluateKeyNoDuplicates)
@@ -241,6 +242,16 @@ namespace CodeGen.Engine
241242
mreturn EvaluateKeyLoopExpression(tkn, template, loops, doEvaluate)
242243
endmethod
243244

245+
private static method evaluateKeyLiteralSegments, boolean
246+
tkn, @Token
247+
template, @FileNode
248+
loops, @IEnumerable<LoopNode>
249+
endparams
250+
proc
251+
lambda doEvaluate(str, ky, index, loop) (ky.Segments.FirstOrDefault(lambda(s) { s.SegmentType == RpsKeySegmentType.Literal }) != ^null)
252+
mreturn EvaluateKeyLoopExpression(tkn, template, loops, doEvaluate)
253+
endmethod
254+
244255
private static method evaluateKeyNoChanges, boolean
245256
tkn, @Token
246257
template, @FileNode

CodeGenEngine/Tokenizer.dbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,7 @@ namespace CodeGen.Engine
850850
expressions.Add("LAST", TokenValidity.FieldLoop | TokenValidity.FieldSelectionLoop | TokenValidity.TagLoop)
851851
expressions.Add("LEAVE", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
852852
expressions.Add("LENGTH_OVER_8", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
853+
expressions.Add("LITERAL_SEGMENTS", TokenValidity.KeyLoop)
853854
expressions.Add("LONG_DESCRIPTION", TokenValidity.EnumLoop)
854855
expressions.Add("LONGDESC", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
855856
expressions.Add("MAPPED", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)

Documentation/CodeGen.chm

274 Bytes
Binary file not shown.

Documentation/CodeGen.hsm

2.26 KB
Binary file not shown.

0 commit comments

Comments
 (0)