mirror of
https://github.com/moparisthebest/Simba
synced 2025-02-16 07:10:10 -05:00
Added regex support for Simba :).
This commit is contained in:
parent
e1a11367f4
commit
b0f960cd34
@ -1 +1 @@
|
||||
function ps_Format(const fmt : string;const args : array of const) : string; extdecl;
begin;
Result := Format(fmt,Args);
end;
function ps_Capitalize(str : string) : string;extdecl;
begin
result := Capitalize(str);
end;
function ps_ExtractFromStr( Str : string; Extract : StrExtr) : string; extdecl;
begin
result := extractfromstr(str,extract);
end;
function ps_BoolToStr(bool : boolean) : string; extdecl;
begin;
result := BoolToStr(bool,true);
end;
function ps_Replace(Text, FindStr, ReplaceStr: string; Flags: TReplaceFlags): string; extdecl;
begin;
result := StringReplace(Text,FindStr,ReplaceStr,Flags);
end;
function ps_IntToStr(int : integer) : string; extdecl;
begin
result := inttostr(int);
end;
function ps_FloatToStr(flt : extended) : string; extdecl;
begin
result := floattostr(flt);
end;
function ps_StrToInt(value: String): Integer; extdecl;
begin
result := StrToInt(value);
end;
function ps_StrToIntDef(value: String; default: Integer): Integer; extdecl;
begin
result := StrToIntDef(value,default);
end;
function ps_StrToFloat(value: String): Extended; extdecl;
begin
result := StrToFloat(value);
end;
function ps_StrToFloatDef(value: String; default: Extended): Extended; extdecl;
begin
result := StrToFloatDef(value,default);
end;
function ps_StrToBool(value: String): Boolean;extdecl;
begin
result := StrToBool(value);
end;
function ps_StrToBoolDef(value: String; default: Boolean): Boolean; extdecl;
begin
result := StrToBoolDef(value,default);
end;
function ps_Between(s1, s2, str: string): string; extdecl;
var
I,J : integer;
begin;
Result := '';
I := pos(s1,str);
if I > 0 then
begin;
i := i + length(s1);
j := posex(s2,str,i);
if j > 0 then
Result := copy(str,i,j-i);
end;
end;
function ps_Implode(Glue : string; Pieces: TStringArray): string;extdecl;
begin
result := implode(glue,pieces);
end;
function ps_Explode(del, str: string): TStringArray;extdecl;
begin
result := Explode(del,str);
end;
procedure ps_ExplodeWrap(del, str: string; var res : TStringArray);extdecl;
begin
res := Explode(del,str);
end;
function ps_Padl(s: String; i: longInt): String;extdecl;
begin
result := StringOfChar(Char(' '), i - length(s)) + s;
end;
function ps_Padz(s: String; i: longInt): String;extdecl;
begin
result := StringOfChar(Char('0'), i - length(s)) + s;
end;
function ps_Padr(s: String; i: longInt): String;extdecl;
begin
result := s + StringOfChar(Char(' '), i - Length(s));
end;
|
||||
function ps_Format(const fmt : string;const args : array of const) : string; extdecl;
begin;
Result := Format(fmt,Args);
end;
function ps_Capitalize(str : string) : string;extdecl;
begin
result := Capitalize(str);
end;
function ps_ExtractFromStr( Str : string; Extract : StrExtr) : string; extdecl;
begin
result := extractfromstr(str,extract);
end;
function ps_BoolToStr(bool : boolean) : string; extdecl;
begin;
result := BoolToStr(bool,true);
end;
function ps_Replace(Text, FindStr, ReplaceStr: string; Flags: TReplaceFlags): string; extdecl;
begin;
result := StringReplace(Text,FindStr,ReplaceStr,Flags);
end;
function ps_IntToStr(int : integer) : string; extdecl;
begin
result := inttostr(int);
end;
function ps_FloatToStr(flt : extended) : string; extdecl;
begin
result := floattostr(flt);
end;
function ps_StrToInt(value: String): Integer; extdecl;
begin
result := StrToInt(value);
end;
function ps_StrToIntDef(value: String; default: Integer): Integer; extdecl;
begin
result := StrToIntDef(value,default);
end;
function ps_StrToFloat(value: String): Extended; extdecl;
begin
result := StrToFloat(value);
end;
function ps_StrToFloatDef(value: String; default: Extended): Extended; extdecl;
begin
result := StrToFloatDef(value,default);
end;
function ps_StrToBool(value: String): Boolean;extdecl;
begin
result := StrToBool(value);
end;
function ps_StrToBoolDef(value: String; default: Boolean): Boolean; extdecl;
begin
result := StrToBoolDef(value,default);
end;
function ps_Between(s1, s2, str: string): string; extdecl;
var
I,J : integer;
begin;
Result := '';
I := pos(s1,str);
if I > 0 then
begin;
i := i + length(s1);
j := posex(s2,str,i);
if j > 0 then
Result := copy(str,i,j-i);
end;
end;
function ps_Implode(Glue : string; Pieces: TStringArray): string;extdecl;
begin
result := implode(glue,pieces);
end;
function ps_Explode(del, str: string): TStringArray;extdecl;
begin
result := Explode(del,str);
end;
procedure ps_ExplodeWrap(del, str: string; var res : TStringArray);extdecl;
begin
res := Explode(del,str);
end;
function ps_Padl(s: String; i: longInt): String;extdecl;
begin
result := StringOfChar(Char(' '), i - length(s)) + s;
end;
function ps_Padz(s: String; i: longInt): String;extdecl;
begin
result := StringOfChar(Char('0'), i - length(s)) + s;
end;
function ps_Padr(s: String; i: longInt): String;extdecl;
begin
result := s + StringOfChar(Char(' '), i - Length(s));
end;
function ps_ExecRegExpr( const RegExpr, InputStr : String) : boolean;extdecl;
begin
result := execregexpr(RegExpr,InputStr);
end;
procedure ps_SplitRegExpr( const RegExpr, InputStr : String; Pieces : TStrings);extdecl;
begin
SplitRegExpr(RegExpr,InputStr,Pieces);
end;
function ps_ReplaceRegExpr( const RegExpr, InputStr, ReplaceStr : String; UseSubstitution : boolean) : String;extdecl;
begin
result := ReplaceRegExpr(RegExpr,InputStr,ReplaceStr,UseSubstitution);
end;
|
@ -162,6 +162,9 @@ AddFunction(@ps_explodewrap,'procedure ExplodeWrap(del, str: string; var res : T
|
||||
AddFunction(@ps_PadL,'function Padl(s: String; i: longInt): String;');
|
||||
AddFunction(@Ps_Padz,'function Padz(s: String; i: longInt): String;');
|
||||
AddFunction(@ps_padR,'function Padr(s: String; i: longInt): String;');
|
||||
AddFunction(@ps_ExecRegExpr,'function ExecRegExpr( const RegExpr, InputStr : String) : boolean;');
|
||||
AddFunction(@ps_SplitRegExpr,'procedure SplitRegExpr( const RegExpr, InputStr : String; Pieces : TStrings);');
|
||||
addfunction(@ps_ReplaceRegExpr,'function ReplaceRegExpr( const RegExpr, InputStr, ReplaceStr : String; UseSubstitution : boolean) : String;');
|
||||
|
||||
{web}
|
||||
SetCurrSection('Web');
|
||||
|
@ -215,6 +215,7 @@ uses
|
||||
strutils,
|
||||
tpa, //Tpa stuff
|
||||
forms,//Forms
|
||||
SynRegExpr,
|
||||
lclintf // for GetTickCount and others.
|
||||
;
|
||||
{$ifdef Linux}
|
||||
@ -674,6 +675,48 @@ begin
|
||||
RegisterProperty('Index','Integer',iptR);
|
||||
RegisterProperty('Name','String',iptRW);
|
||||
end;
|
||||
with CL.AddClassN(CL.FindClass('Exception'),'ERegExpr') do
|
||||
begin
|
||||
RegisterProperty('ErrorCode', 'integer', iptrw);
|
||||
RegisterProperty('CompilerErrorPos', 'integer', iptrw);
|
||||
end;
|
||||
PSClass :=cl.AddClassN(cl.FindClass('TObject'),'TRegExp');
|
||||
with PSClass do
|
||||
begin
|
||||
RegisterMethod('Constructor Create');
|
||||
RegisterMethod('Function VersionMajor : integer');
|
||||
RegisterMethod('Function VersionMinor : integer');
|
||||
RegisterProperty('Expression', 'String', iptrw);
|
||||
RegisterProperty('ModifierStr', 'String', iptrw);
|
||||
RegisterProperty('ModifierI', 'boolean', iptrw);
|
||||
RegisterProperty('ModifierR', 'boolean', iptrw);
|
||||
RegisterProperty('ModifierS', 'boolean', iptrw);
|
||||
RegisterProperty('ModifierG', 'boolean', iptrw);
|
||||
RegisterProperty('ModifierM', 'boolean', iptrw);
|
||||
RegisterProperty('ModifierX', 'boolean', iptrw);
|
||||
RegisterMethod('Function Exec( const AInputString : String) : boolean;');
|
||||
RegisterMethod('Function ExecNext : boolean');
|
||||
RegisterMethod('Function ExecPos( AOffset : integer) : boolean');
|
||||
RegisterProperty('InputString', 'String', iptrw);
|
||||
RegisterMethod('Function Substitute( const ATemplate : String) : String');
|
||||
RegisterMethod('Procedure Split( AInputStr : String; APieces : TStrings)');
|
||||
RegisterMethod('Function Replace( AInputStr : String; const AReplaceStr : String; AUseSubstitution : boolean) : String;');
|
||||
RegisterProperty('SubExprMatchCount', 'integer', iptr);
|
||||
RegisterProperty('MatchPos', 'integer integer', iptr);
|
||||
RegisterProperty('MatchLen', 'integer integer', iptr);
|
||||
RegisterProperty('Match', 'String integer', iptr);
|
||||
RegisterMethod('Function LastError : integer');
|
||||
RegisterMethod('Function ErrorMsg( AErrorID : integer) : String');
|
||||
RegisterProperty('CompilerErrorPos', 'integer', iptr);
|
||||
RegisterProperty('SpaceChars', 'String', iptrw);
|
||||
RegisterProperty('WordChars', 'String', iptrw);
|
||||
RegisterProperty('LineSeparators', 'String', iptrw);
|
||||
RegisterProperty('LinePairedSeparator', 'String', iptrw);
|
||||
RegisterMethod('Function InvertCaseFunction( const Ch : Char) : Char');
|
||||
RegisterProperty('InvertCase', 'TRegExprInvertCaseFunction', iptrw);
|
||||
RegisterMethod('Procedure Compile');
|
||||
RegisterMethod('Function Dump : String');
|
||||
end;
|
||||
end;
|
||||
|
||||
function CreateMufasaBitmap : TMufasaBitmap;
|
||||
@ -687,12 +730,54 @@ begin;
|
||||
CurrThread.Client.MBitmaps.FreeBMP(Self.Index);
|
||||
end;
|
||||
|
||||
type
|
||||
TRegExp = class(SynRegExpr.TRegExpr);
|
||||
procedure MBmp_Index_r(self : TMufasaBitmap; var Index : integer);begin; Index := self.Index; end;
|
||||
procedure MBmp_Width_r(self : TMufasaBitmap; var Width : integer);begin; Width := self.Width; end;
|
||||
procedure MBmp_Height_r(self : TMufasaBitmap; var Height : integer);begin; Height := self.Height; end;
|
||||
procedure MBmp_Name_r(self : TMufasaBitmap; var Name : String);begin; Name := self.Name; end;
|
||||
procedure MBmp_Name_w(self : TMufasaBitmap; const Name : String);begin; Self.name := name; end;
|
||||
procedure MBmp_TransColorSet_r(Self : TMufasaBitmap; var IsSet : boolean); begin IsSet := self.TransparentColorSet; end;
|
||||
procedure ERegExprCompilerErrorPos_W(Self: ERegExpr; const T: integer); Begin Self.CompilerErrorPos := T; end;
|
||||
procedure ERegExprCompilerErrorPos_R(Self: ERegExpr; var T: integer);Begin T := Self.CompilerErrorPos; end;
|
||||
procedure ERegExprErrorCode_W(Self: ERegExpr; const T: integer);Begin Self.ErrorCode := T; end;
|
||||
procedure ERegExprErrorCode_R(Self: ERegExpr; var T: integer);Begin T := Self.ErrorCode; end;
|
||||
procedure TRegExprInvertCase_W(Self: TRegExp; const T: TRegExprInvertCaseFunction);begin Self.InvertCase := T; end;
|
||||
procedure TRegExprInvertCase_R(Self: TRegExp; var T: TRegExprInvertCaseFunction);begin T := Self.InvertCase; end;
|
||||
procedure TRegExprLinePairedSeparator_W(Self: TRegExp; const T: RegExprString);begin Self.LinePairedSeparator := T; end;
|
||||
procedure TRegExprLinePairedSeparator_R(Self: TRegExp; var T: RegExprString);begin T := Self.LinePairedSeparator; end;
|
||||
procedure TRegExprLineSeparators_W(Self: TRegExp; const T: RegExprString);begin Self.LineSeparators := T; end;
|
||||
procedure TRegExprLineSeparators_R(Self: TRegExp; var T: RegExprString);begin T := Self.LineSeparators; end;
|
||||
procedure TRegExprWordChars_W(Self: TRegExp; const T: RegExprString);begin Self.WordChars := T; end;
|
||||
procedure TRegExprWordChars_R(Self: TRegExp; var T: RegExprString);begin T := Self.WordChars; end;
|
||||
procedure TRegExprSpaceChars_W(Self: TRegExp; const T: RegExprString);begin Self.SpaceChars := T; end;
|
||||
procedure TRegExprSpaceChars_R(Self: TRegExp; var T: RegExprString);begin T := Self.SpaceChars; end;
|
||||
procedure TRegExprCompilerErrorPos_R(Self: TRegExp; var T: integer);begin T := Self.CompilerErrorPos; end;
|
||||
procedure TRegExprMatch_R(Self: TRegExp; var T: RegExprString; const t1: integer);begin T := Self.Match[t1]; end;
|
||||
procedure TRegExprMatchLen_R(Self: TRegExp; var T: integer; const t1: integer);begin T := Self.MatchLen[t1]; end;
|
||||
procedure TRegExprMatchPos_R(Self: TRegExp; var T: integer; const t1: integer);begin T := Self.MatchPos[t1]; end;
|
||||
procedure TRegExprSubExprMatchCount_R(Self: TRegExp; var T: integer);begin T := Self.SubExprMatchCount; end;
|
||||
Function TRegExprReplace2_P(Self: TRegExp; AInputStr : RegExprString; AReplaceFunc : TRegExprReplaceFunction) : RegExprString;Begin Result := Self.Replace(AInputStr, AReplaceFunc); END;
|
||||
Function TRegExprReplace_P(Self: TRegExp; AInputStr : RegExprString; const AReplaceStr : RegExprString; AUseSubstitution : boolean) : RegExprString;Begin Result := Self.Replace(AInputStr, AReplaceStr, AUseSubstitution); END;
|
||||
procedure TRegExprInputString_W(Self: TRegExp; const T: RegExprString);begin Self.InputString := T; end;
|
||||
procedure TRegExprInputString_R(Self: TRegExp; var T: RegExprString);begin T := Self.InputString; end;
|
||||
Function TRegExprExec_P(Self: TRegExp; const AInputString : RegExprString) : boolean;Begin Result := Self.Exec(AInputString); END;
|
||||
procedure TRegExprModifierX_W(Self: TRegExp; const T: boolean);begin Self.ModifierX := T; end;
|
||||
procedure TRegExprModifierX_R(Self: TRegExp; var T: boolean);begin T := Self.ModifierX; end;
|
||||
procedure TRegExprModifierM_W(Self: TRegExp; const T: boolean);begin Self.ModifierM := T; end;
|
||||
procedure TRegExprModifierM_R(Self: TRegExp; var T: boolean);begin T := Self.ModifierM; end;
|
||||
procedure TRegExprModifierG_W(Self: TRegExp; const T: boolean);begin Self.ModifierG := T; end;
|
||||
procedure TRegExprModifierG_R(Self: TRegExp; var T: boolean);begin T := Self.ModifierG; end;
|
||||
procedure TRegExprModifierS_W(Self: TRegExp; const T: boolean);begin Self.ModifierS := T; end;
|
||||
procedure TRegExprModifierS_R(Self: TRegExp; var T: boolean);begin T := Self.ModifierS; end;
|
||||
procedure TRegExprModifierR_W(Self: TRegExp; const T: boolean);begin Self.ModifierR := T; end;
|
||||
procedure TRegExprModifierR_R(Self: TRegExp; var T: boolean);begin T := Self.ModifierR; end;
|
||||
procedure TRegExprModifierI_W(Self: TRegExp; const T: boolean);begin Self.ModifierI := T; end;
|
||||
procedure TRegExprModifierI_R(Self: TRegExp; var T: boolean);begin T := Self.ModifierI; end;
|
||||
procedure TRegExprModifierStr_W(Self: TRegExp; const T: RegExprString);begin Self.ModifierStr := T; end;
|
||||
procedure TRegExprModifierStr_R(Self: TRegExp; var T: RegExprString);begin T := Self.ModifierStr; end;
|
||||
procedure TRegExprExpression_W(Self: TRegExp; const T: RegExprString);begin Self.Expression := T; end;
|
||||
procedure TRegExprExpression_R(Self: TRegExp; var T: RegExprString);begin T := Self.Expression; end;
|
||||
|
||||
procedure RIRegister_Mufasa(cl: TPSRuntimeClassImporter);
|
||||
var
|
||||
@ -735,6 +820,47 @@ begin;
|
||||
RegisterMethod(@TMufasaBitmap.SaveToFile, 'SAVETOFILE');
|
||||
RegisterMethod(@TMufasaBitmap.LoadFromFile, 'LOADFROMFILE');
|
||||
end;
|
||||
with CL.Add(ERegExpr) do
|
||||
begin
|
||||
RegisterPropertyHelper(@ERegExprErrorCode_R,@ERegExprErrorCode_W,'ErrorCode');
|
||||
RegisterPropertyHelper(@ERegExprCompilerErrorPos_R,@ERegExprCompilerErrorPos_W,'CompilerErrorPos');
|
||||
end;
|
||||
with CL.Add(TRegExp) do
|
||||
begin
|
||||
RegisterConstructor(@TRegExp.Create, 'Create');
|
||||
RegisterMethod(@TRegExp.VersionMajor, 'VersionMajor');
|
||||
RegisterMethod(@TRegExp.VersionMinor, 'VersionMinor');
|
||||
RegisterPropertyHelper(@TRegExprExpression_R,@TRegExprExpression_W,'Expression');
|
||||
RegisterPropertyHelper(@TRegExprModifierStr_R,@TRegExprModifierStr_W,'ModifierStr');
|
||||
RegisterPropertyHelper(@TRegExprModifierI_R,@TRegExprModifierI_W,'ModifierI');
|
||||
RegisterPropertyHelper(@TRegExprModifierR_R,@TRegExprModifierR_W,'ModifierR');
|
||||
RegisterPropertyHelper(@TRegExprModifierS_R,@TRegExprModifierS_W,'ModifierS');
|
||||
RegisterPropertyHelper(@TRegExprModifierG_R,@TRegExprModifierG_W,'ModifierG');
|
||||
RegisterPropertyHelper(@TRegExprModifierM_R,@TRegExprModifierM_W,'ModifierM');
|
||||
RegisterPropertyHelper(@TRegExprModifierX_R,@TRegExprModifierX_W,'ModifierX');
|
||||
RegisterMethod(@TRegExprExec_P, 'Exec');
|
||||
RegisterMethod(@TRegExp.ExecNext, 'ExecNext');
|
||||
RegisterMethod(@TRegExp.ExecPos, 'ExecPos');
|
||||
RegisterPropertyHelper(@TRegExprInputString_R,@TRegExprInputString_W,'InputString');
|
||||
RegisterMethod(@TRegExp.Substitute, 'Substitute');
|
||||
RegisterMethod(@TRegExp.Split, 'Split');
|
||||
RegisterMethod(@TRegExprReplace_P, 'Replace');
|
||||
RegisterPropertyHelper(@TRegExprSubExprMatchCount_R,nil,'SubExprMatchCount');
|
||||
RegisterPropertyHelper(@TRegExprMatchPos_R,nil,'MatchPos');
|
||||
RegisterPropertyHelper(@TRegExprMatchLen_R,nil,'MatchLen');
|
||||
RegisterPropertyHelper(@TRegExprMatch_R,nil,'Match');
|
||||
RegisterMethod(@TRegExp.LastError, 'LastError');
|
||||
RegisterVirtualMethod(@TRegExp.ErrorMsg, 'ErrorMsg');
|
||||
RegisterPropertyHelper(@TRegExprCompilerErrorPos_R,nil,'CompilerErrorPos');
|
||||
RegisterPropertyHelper(@TRegExprSpaceChars_R,@TRegExprSpaceChars_W,'SpaceChars');
|
||||
RegisterPropertyHelper(@TRegExprWordChars_R,@TRegExprWordChars_W,'WordChars');
|
||||
RegisterPropertyHelper(@TRegExprLineSeparators_R,@TRegExprLineSeparators_W,'LineSeparators');
|
||||
RegisterPropertyHelper(@TRegExprLinePairedSeparator_R,@TRegExprLinePairedSeparator_W,'LinePairedSeparator');
|
||||
RegisterMethod(@TRegExp.InvertCaseFunction, 'InvertCaseFunction');
|
||||
RegisterPropertyHelper(@TRegExprInvertCase_R,@TRegExprInvertCase_W,'InvertCase');
|
||||
RegisterMethod(@TRegExp.Compile, 'Compile');
|
||||
RegisterMethod(@TRegExp.Dump, 'Dump');
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TPSThread.OnCompImport(Sender: TObject; x: TPSPascalCompiler);
|
||||
|
Loading…
Reference in New Issue
Block a user