mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 12:25:59 +02:00
pastojs: convert str(float:w:p) to rtl.floatToStr(d,w,p)
git-svn-id: trunk@37301 -
This commit is contained in:
parent
58aaf2a545
commit
f1055a32b9
@ -406,6 +406,7 @@ type
|
|||||||
pbifnGetObject,
|
pbifnGetObject,
|
||||||
pbifnIs,
|
pbifnIs,
|
||||||
pbifnIsExt,
|
pbifnIsExt,
|
||||||
|
pbifnFloatToStr,
|
||||||
pbifnFreeLocalVar,
|
pbifnFreeLocalVar,
|
||||||
pbifnFreeVar,
|
pbifnFreeVar,
|
||||||
pbifnProcType_Create,
|
pbifnProcType_Create,
|
||||||
@ -506,6 +507,7 @@ const
|
|||||||
'getObject', // rtl.getObject
|
'getObject', // rtl.getObject
|
||||||
'is', // rtl.is
|
'is', // rtl.is
|
||||||
'isExt', // rtl.isExt
|
'isExt', // rtl.isExt
|
||||||
|
'floatToStr', // rtl.floatToStr
|
||||||
'freeLoc', // rtl.freeLoc
|
'freeLoc', // rtl.freeLoc
|
||||||
'free', // rtl.free
|
'free', // rtl.free
|
||||||
'createCallback', // rtl.createCallback
|
'createCallback', // rtl.createCallback
|
||||||
@ -7010,7 +7012,7 @@ end;
|
|||||||
function TPasToJSConverter.ConvertBuiltIn_StrProc(El: TParamsExpr;
|
function TPasToJSConverter.ConvertBuiltIn_StrProc(El: TParamsExpr;
|
||||||
AContext: TConvertContext): TJSElement;
|
AContext: TConvertContext): TJSElement;
|
||||||
// convert 'str(value,aString)' to 'aString = <string>'
|
// convert 'str(value,aString)' to 'aString = <string>'
|
||||||
// for the conversion see ConvertBuiltInStrFunc
|
// for the conversion see ConvertBuiltInStrParam
|
||||||
var
|
var
|
||||||
AssignContext: TAssignContext;
|
AssignContext: TAssignContext;
|
||||||
StrVar: TPasExpr;
|
StrVar: TPasExpr;
|
||||||
@ -7086,6 +7088,7 @@ var
|
|||||||
Call: TJSCallExpression;
|
Call: TJSCallExpression;
|
||||||
PlusEl: TJSAdditiveExpressionPlus;
|
PlusEl: TJSAdditiveExpressionPlus;
|
||||||
Bracket: TJSBracketMemberExpression;
|
Bracket: TJSBracketMemberExpression;
|
||||||
|
|
||||||
procedure PrependStrLit;
|
procedure PrependStrLit;
|
||||||
begin
|
begin
|
||||||
PlusEl:=TJSAdditiveExpressionPlus(CreateElement(TJSAdditiveExpressionPlus,El));
|
PlusEl:=TJSAdditiveExpressionPlus(CreateElement(TJSAdditiveExpressionPlus,El));
|
||||||
@ -7109,18 +7112,17 @@ begin
|
|||||||
end
|
end
|
||||||
else if ResolvedEl.BaseType in btAllJSFloats then
|
else if ResolvedEl.BaseType in btAllJSFloats then
|
||||||
begin
|
begin
|
||||||
NeedStrLit:=true;
|
// convert to rtl.floatToStr(El,width,precision)
|
||||||
Add:=ConvertElement(El,AContext);
|
|
||||||
if El.format2<>nil then
|
|
||||||
begin
|
|
||||||
// precision -> rtl El.toFixed(precision);
|
|
||||||
NeedStrLit:=false;
|
|
||||||
Call:=CreateCallExpression(El);
|
Call:=CreateCallExpression(El);
|
||||||
Call.Expr:=CreateDotExpression(El,Add,CreatePrimitiveDotExpr('toFixed',El));
|
Call.Expr:=CreateMemberExpression([FBuiltInNames[pbivnRTL],FBuiltInNames[pbifnFloatToStr]]);
|
||||||
|
Call.AddArg(ConvertElement(El,AContext));
|
||||||
|
if El.format1<>nil then
|
||||||
|
Call.AddArg(ConvertElement(El.format1,AContext));
|
||||||
|
if El.format2<>nil then
|
||||||
Call.AddArg(ConvertElement(El.format2,AContext));
|
Call.AddArg(ConvertElement(El.format2,AContext));
|
||||||
Add:=Call;
|
Result:=Call;
|
||||||
Call:=nil;
|
Call:=nil;
|
||||||
end;
|
exit;
|
||||||
end
|
end
|
||||||
else if IsStrFunc and (ResolvedEl.BaseType in btAllJSStringAndChars) then
|
else if IsStrFunc and (ResolvedEl.BaseType in btAllJSStringAndChars) then
|
||||||
Add:=ConvertElement(El,AContext)
|
Add:=ConvertElement(El,AContext)
|
||||||
|
@ -4253,6 +4253,8 @@ begin
|
|||||||
Add(' str(d,s);');
|
Add(' str(d,s);');
|
||||||
Add(' str(i:3,s);');
|
Add(' str(i:3,s);');
|
||||||
Add(' str(d:3:2,s);');
|
Add(' str(d:3:2,s);');
|
||||||
|
Add(' Str(12.456:12:1,s);');
|
||||||
|
Add(' Str(12.456:12,s);');
|
||||||
Add(' s:=str(b);');
|
Add(' s:=str(b);');
|
||||||
Add(' s:=str(i);');
|
Add(' s:=str(i);');
|
||||||
Add(' s:=str(d);');
|
Add(' s:=str(d);');
|
||||||
@ -4275,15 +4277,17 @@ begin
|
|||||||
LinesToStr([ // this.$main
|
LinesToStr([ // this.$main
|
||||||
'$mod.s = ""+$mod.b;',
|
'$mod.s = ""+$mod.b;',
|
||||||
'$mod.s = ""+$mod.i;',
|
'$mod.s = ""+$mod.i;',
|
||||||
'$mod.s = ""+$mod.d;',
|
'$mod.s = rtl.floatToStr($mod.d);',
|
||||||
'$mod.s = rtl.spaceLeft(""+$mod.i,3);',
|
'$mod.s = rtl.spaceLeft(""+$mod.i,3);',
|
||||||
'$mod.s = rtl.spaceLeft($mod.d.toFixed(2),3);',
|
'$mod.s = rtl.floatToStr($mod.d,3,2);',
|
||||||
|
'$mod.s = rtl.floatToStr(12.456,12,1);',
|
||||||
|
'$mod.s = rtl.floatToStr(12.456,12);',
|
||||||
'$mod.s = ""+$mod.b;',
|
'$mod.s = ""+$mod.b;',
|
||||||
'$mod.s = ""+$mod.i;',
|
'$mod.s = ""+$mod.i;',
|
||||||
'$mod.s = ""+$mod.d;',
|
'$mod.s = rtl.floatToStr($mod.d);',
|
||||||
'$mod.s = (""+$mod.i)+$mod.i;',
|
'$mod.s = (""+$mod.i)+$mod.i;',
|
||||||
'$mod.s = rtl.spaceLeft(""+$mod.i,3);',
|
'$mod.s = rtl.spaceLeft(""+$mod.i,3);',
|
||||||
'$mod.s = rtl.spaceLeft($mod.d.toFixed(2),3);',
|
'$mod.s = rtl.floatToStr($mod.d,3,2);',
|
||||||
'$mod.s = rtl.spaceLeft("" + $mod.i, 4) + $mod.i;',
|
'$mod.s = rtl.spaceLeft("" + $mod.i, 4) + $mod.i;',
|
||||||
'$mod.s = ("" + $mod.i) + rtl.spaceLeft("" + $mod.i, 5);',
|
'$mod.s = ("" + $mod.i) + rtl.spaceLeft("" + $mod.i, 5);',
|
||||||
'$mod.s = rtl.spaceLeft("" + $mod.i, 4) + rtl.spaceLeft("" + $mod.i, 5);',
|
'$mod.s = rtl.spaceLeft("" + $mod.i, 4) + rtl.spaceLeft("" + $mod.i, 5);',
|
||||||
|
Loading…
Reference in New Issue
Block a user