Skip to content

Commit 5c9f0fe

Browse files
author
Steve Ives
committed
Added new structure expression tokens <IF GET_ALL_ENDPOINT>, <IF GET_ENDPOINT>, <IF POST_ENDPOINT>, <IF PUT_ENDPOINT>, <IF PATCH_ENDPOINT>, <IF DELETE_ENDPOINT>, <IF ALTERNATE_KEY_ENDPOINTS> and <IF PROPERTY_ENDPOINTS>.
1 parent 2518f48 commit 5c9f0fe

File tree

5 files changed

+134
-10
lines changed

5 files changed

+134
-10
lines changed

CodeGenEngine/ExpressionEvaluators/ExpressionEvaluator.dbl

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,28 +113,47 @@ namespace CodeGen.Engine
113113

114114
lambda doFindAndRunEvaluator(evaluators)
115115
begin
116+
;;Normal expressions
116117
if (evaluators.ContainsKey(expression.Value.Value)) then
117118
mreturn evaluators[expression.Value.Value](expression.Value, template, loops)
118-
else if ((loops.Count() > 0) && (loopUtilityExpressionEvaluators.ContainsKey(expression.Value.Value))) then
119+
120+
;;Loop utility expressions
121+
else if ((loops.Count() > 0) && (loopUtilityExpressionEvaluators.ContainsKey(expression.Value.Value))) then
119122
mreturn loopUtilityExpressionEvaluators[expression.Value.Value](expression.Value, template, loops)
120-
else if ((currentContext == TokenType.Generic) && (expression.Value.Value.StartsWith("USERTOKEN_") || expression.Value.Value.StartsWith("NOT_USERTOKEN_"))) then
123+
124+
;;USERTOKEN_ and NOT_USERTOKEN_ expressions
125+
else if ((currentContext == TokenType.Generic) && (expression.Value.Value.StartsWith("USERTOKEN_") || expression.Value.Value.StartsWith("NOT_USERTOKEN_"))) then
121126
mreturn evaluateUserToken(expression.Value, template, loops)
127+
128+
;;CUSTOM_ field loop expressions
122129
else if ((currentContext == TokenType.FieldLoop) && expression.Value.Value.StartsWith("CUSTOM_")) then
123130
mreturn evaluateFieldCustom(expression.Value, template, loops)
124-
else if (expression.Value.Value.StartsWith("DEFINED_")) then
131+
132+
;;DEFINED_
133+
else if (expression.Value.Value.StartsWith("DEFINED_")) then
125134
mreturn template.Context.Taskset.Defines.Contains(expression.Value.Value)
126-
else if (expression.Value.Value.StartsWith("NOT_DEFINED_")) then
135+
136+
;;NOT_DEFINED_
137+
else if (expression.Value.Value.StartsWith("NOT_DEFINED_")) then
127138
mreturn !template.Context.Taskset.Defines.Contains(expression.Value.Value.Replace("NOT_",""))
128-
else if (expression.Value.Value.StartsWith("COUNTER_1_") || expression.Value.Value.StartsWith("COUNTER_2_")) then
139+
140+
;;COUNTER_
141+
else if (expression.Value.Value.StartsWith("COUNTER_1_") || expression.Value.Value.StartsWith("COUNTER_2_")) then
129142
mreturn evaluateCounterValue(expression.Value, template, loops)
130-
else if (expression.Value.Value.StartsWith("PROCESSED_EXCLUSIVE_")
143+
144+
;;PROCESSED_ and REMAINING_
145+
else if (expression.Value.Value.StartsWith("PROCESSED_EXCLUSIVE_")
131146
& || expression.Value.Value.StartsWith("PROCESSED_INCLUSIVE_")
132147
& || expression.Value.Value.StartsWith("REMAINING_EXCLUSIVE_")
133148
& || expression.Value.Value.StartsWith("REMAINING_INCLUSIVE_")) then
134149
mreturn evaluateLoopProgress(expression.Value, template, loops)
135-
else if (expression.Value.Value.StartsWith("TOTAL_ITEMS_")) then
150+
151+
;;TOTAL_ITEMS_
152+
else if (expression.Value.Value.StartsWith("TOTAL_ITEMS_")) then
136153
mreturn evaluateLoopTotalItems(expression.Value, template, loops)
137-
else
154+
155+
;;No match!
156+
else
138157
throw new ApplicationException(noEvaluatorMessage())
139158
end
140159

CodeGenEngine/ExpressionEvaluators/ExpressionEvaluatorGeneric.dbl

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,17 @@ namespace CodeGen.Engine
9595
genericExpressionEvaluators.Add("STRUCTURE_USER>DEFINED", evaluateStructureUserDefined)
9696
genericExpressionEvaluators.Add("STRUCTURE_UTEXT", evaluateStructureUserText)
9797

98+
;; Harmony Core structure expressions
99+
100+
genericExpressionEvaluators.Add("GET_ALL_ENDPOINT", evaluateGetAllEndpoint)
101+
genericExpressionEvaluators.Add("GET_ENDPOINT", evaluateGetEndpoint)
102+
genericExpressionEvaluators.Add("POST_ENDPOINT", evaluatePostEndpoint)
103+
genericExpressionEvaluators.Add("PUT_ENDPOINT", evaluatePutEndpoint)
104+
genericExpressionEvaluators.Add("PATCH_ENDPOINT", evaluatePatchEndpoint)
105+
genericExpressionEvaluators.Add("DELETE_ENDPOINT", evaluateDeleteEndpoint)
106+
genericExpressionEvaluators.Add("ALTERNATE_KEY_ENDPOINTS", evaluateAlternateKeyEndpoints)
107+
genericExpressionEvaluators.Add("PROPERTY_ENDPOINTS", evaluatePropertyEndpoints)
108+
98109
endmethod
99110

100111
;; -------------------------------------------------------------------------------------------------------------------------------
@@ -398,7 +409,90 @@ namespace CodeGen.Engine
398409
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
399410
endmethod
400411

401-
endclass
412+
;; -------------------------------------------------------------------------------------------------------------------------------
413+
;; Harmony Core Structure expressions
414+
415+
private static method evaluateGetAllEndpoint, boolean
416+
tkn, @Token
417+
template, @FileNode
418+
loops, @IEnumerable<LoopNode>
419+
endparams
420+
proc
421+
lambda doEvaluate(str) (str.UserText.Contains("NO_GET_ALL_ENDPOINT")==false && str.LongDescription.Contains("NO_GET_ALL_ENDPOINT")==false)
422+
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
423+
endmethod
424+
425+
private static method evaluateGetEndpoint, boolean
426+
tkn, @Token
427+
template, @FileNode
428+
loops, @IEnumerable<LoopNode>
429+
endparams
430+
proc
431+
lambda doEvaluate(str) (str.UserText.Contains("NO_GET_ENDPOINT")==false && str.LongDescription.Contains("NO_GET_ENDPOINT")==false)
432+
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
433+
endmethod
434+
435+
private static method evaluatePostEndpoint, boolean
436+
tkn, @Token
437+
template, @FileNode
438+
loops, @IEnumerable<LoopNode>
439+
endparams
440+
proc
441+
lambda doEvaluate(str) (str.UserText.Contains("NO_POST_ENDPOINT")==false && str.LongDescription.Contains("NO_POST_ENDPOINT")==false)
442+
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
443+
endmethod
444+
445+
private static method evaluatePutEndpoint, boolean
446+
tkn, @Token
447+
template, @FileNode
448+
loops, @IEnumerable<LoopNode>
449+
endparams
450+
proc
451+
lambda doEvaluate(str) (str.UserText.Contains("NO_PUT_ENDPOINT")==false && str.LongDescription.Contains("NO_PUT_ENDPOINT")==false)
452+
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
453+
endmethod
454+
455+
private static method evaluatePatchEndpoint, boolean
456+
tkn, @Token
457+
template, @FileNode
458+
loops, @IEnumerable<LoopNode>
459+
endparams
460+
proc
461+
lambda doEvaluate(str) (str.UserText.Contains("NO_PATCH_ENDPOINT")==false && str.LongDescription.Contains("NO_PATCH_ENDPOINT")==false)
462+
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
463+
endmethod
464+
465+
private static method evaluateDeleteEndpoint, boolean
466+
tkn, @Token
467+
template, @FileNode
468+
loops, @IEnumerable<LoopNode>
469+
endparams
470+
proc
471+
lambda doEvaluate(str) (str.UserText.Contains("NO_DELETE_ENDPOINT")==false && str.LongDescription.Contains("NO_DELETE_ENDPOINT")==false)
472+
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
473+
endmethod
474+
475+
private static method evaluateAlternateKeyEndpoints, boolean
476+
tkn, @Token
477+
template, @FileNode
478+
loops, @IEnumerable<LoopNode>
479+
endparams
480+
proc
481+
lambda doEvaluate(str) (str.UserText.Contains("NO_ALTERNATE_KEY_ENDPOINTS")==false && str.LongDescription.Contains("NO_ALTERNATE_KEY_ENDPOINTS")==false)
482+
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
483+
endmethod
484+
485+
private static method evaluatePropertyEndpoints, boolean
486+
tkn, @Token
487+
template, @FileNode
488+
loops, @IEnumerable<LoopNode>
489+
endparams
490+
proc
491+
lambda doEvaluate(str) (str.UserText.Contains("NO_PROPERTY_ENDPOINTS")==false && str.LongDescription.Contains("NO_PROPERTY_ENDPOINTS")==false)
492+
mreturn evaluateStructureExpression(tkn, template, loops, doEvaluate)
493+
endmethod
494+
495+
endclass
402496

403497
endnamespace
404498

CodeGenEngine/Tokenizer.dbl

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,18 @@ namespace CodeGen.Engine
779779
expressions.Add("GROUP_EXPAND", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
780780
expressions.Add("GROUP_NO_EXPAND", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
781781
expressions.Add("HANDLE", TokenValidity.ParameterLoop)
782+
783+
expressions.Add("GET_ALL_ENDPOINT", TokenValidity.Anywhere)
784+
expressions.Add("GET_ENDPOINT", TokenValidity.Anywhere)
785+
expressions.Add("POST_ENDPOINT", TokenValidity.Anywhere)
786+
expressions.Add("PUT_ENDPOINT", TokenValidity.Anywhere)
787+
expressions.Add("PATCH_ENDPOINT", TokenValidity.Anywhere)
788+
expressions.Add("DELETE_ENDPOINT", TokenValidity.Anywhere)
789+
expressions.Add("ALTERNATE_KEY_ENDPOINTS", TokenValidity.Anywhere)
790+
expressions.Add("PROPERTY_ENDPOINTS", TokenValidity.Anywhere)
791+
782792
expressions.Add("HARMONY_ROLES", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
793+
783794
expressions.Add("HATVAL", TokenValidity.MethodLoop)
784795
expressions.Add("HEADING", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
785796
expressions.Add("HELPID", TokenValidity.FieldLoop | TokenValidity.KeySegmentLoop | TokenValidity.RelationSegmentLoop)
@@ -967,7 +978,7 @@ namespace CodeGen.Engine
967978
expressions.Add("STRUCTURE", TokenValidity.ParameterLoop)
968979
expressions.Add("STRUCTURE_ASCII", TokenValidity.Anywhere)
969980
expressions.Add("STRUCTURE_FILES", TokenValidity.Anywhere)
970-
expressions.Add("STRUCTURE_HAS_UNIQUE_KEY", TokenValidity.Anywhere)
981+
expressions.Add("STRUCTURE_HAS_UNIQUE_KEY", TokenValidity.Anywhere)
971982
expressions.Add("STRUCTURE_HAS_UNIQUE_PK", TokenValidity.Anywhere)
972983
expressions.Add("STRUCTURE_ISAM", TokenValidity.Anywhere)
973984
expressions.Add("STRUCTURE_KEYS", TokenValidity.Anywhere)

Documentation/CodeGen.chm

140 Bytes
Binary file not shown.

Documentation/CodeGen.hsm

17.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)