@@ -2990,7 +2990,7 @@ procedure TBOS_Attributes.Evaluate(const Params: TBoldOclSymbolParameters);
2990
2990
begin
2991
2991
ClassInfo := Params.values[0 ] as TBoldClassTypeInfo;
2992
2992
Name := help.CreateNewMember(Help.StringType) as TBAString;
2993
- for i := 0 to ClassInfo.AllMembers.Count - 1 do
2993
+ for i := 0 to ClassInfo.AllMembersCount - 1 do
2994
2994
begin
2995
2995
MemberRTInfo := ClassInfo.AllMembers[i];
2996
2996
if MemberRTInfo.IsAttribute then
@@ -3016,7 +3016,7 @@ procedure TBOS_AssociationEnds.Evaluate(const Params: TBoldOclSymbolParameters);
3016
3016
begin
3017
3017
ClassInfo := Params.values[0 ] as TBoldClassTypeInfo;
3018
3018
Name := help.CreateNewMember(Help.StringType) as TBAString;
3019
- for i := 0 to ClassInfo.AllMembers.Count - 1 do
3019
+ for i := 0 to ClassInfo.AllMembersCount - 1 do
3020
3020
begin
3021
3021
MemberRTInfo := ClassInfo.AllMembers[i];
3022
3022
if MemberRTInfo.IsRole then
@@ -3110,10 +3110,38 @@ procedure TBOS_AllSubClasses.Evaluate(const Params: TBoldOclSymbolParameters);
3110
3110
end ;
3111
3111
end ;
3112
3112
3113
+ function SQLLikeToRegEx (const AExpression: string): string;
3114
+ var
3115
+ l: integer;
3116
+ Starts, Ends: boolean;
3117
+ begin
3118
+ l := Length(AExpression);
3119
+ if l > 1 then
3120
+ begin
3121
+ Starts := Copy(AExpression, 1 , 1 ) = ' %' ;
3122
+ Ends := Copy(AExpression, l, 1 ) = ' %' ;
3123
+ if Starts and Ends then
3124
+ result := ' ^.*' + Copy(AExpression, 2 , l-2 ) + ' .*$'
3125
+ else
3126
+ if Starts then
3127
+ result := ' ^.*' + Copy(AExpression, 2 , MaxInt) + ' $'
3128
+ else
3129
+ if Ends then
3130
+ result := ' ^' + Copy(AExpression, 1 , l-1 ) + ' .*$'
3131
+ else
3132
+ result := ' ^' + Copy(AExpression, 1 , l) + ' $'
3133
+ end
3134
+ else
3135
+ if AExpression = ' %' then
3136
+ result := ' .*'
3137
+ else
3138
+ result := ' ^' + AExpression + ' $'
3139
+ end ;
3140
+
3113
3141
function EscapeRegEx (const ASource: string): string;
3114
3142
begin
3115
- result := StringReplace (ASource, ' % ' , ' ' , [rfReplaceAll] );
3116
- result := TPerlRegEx.EscapeRegExChars (result);
3143
+ result := TPerlRegEx.EscapeRegExChars (ASource);
3144
+ result := SQLLikeToRegEx (result);
3117
3145
end ;
3118
3146
3119
3147
procedure TBOS_SQLLike.Evaluate (const Params: TBoldOclSymbolParameters);
@@ -4076,4 +4104,4 @@ initialization
4076
4104
finalization
4077
4105
FreeAndNil(G_OCLOperations);
4078
4106
4079
- end .
4107
+ end .
0 commit comments