fpJson: some code duplication, DRY it
Original Reporter info from Mantis: Alextp2
-
Reporter name: CudaText man_
Original Reporter info from Mantis: Alextp2
- Reporter name: CudaText man_
Description:
jsonscanner.pp
Case FTokenStr^ of '"' : S:='"'; '''' : S:=''''; 't' : S:=#9; 'b' : S:=#8; 'n' : S:=#10; 'r' : S:=#13; 'f' : S:=#12; '\' : S:='\'; '/' : S:='/'; 'u' : begin S:='0000'; u2:=0; For I:=1 to 4 do begin Inc(FTokenStr); c2:=FTokenStr^; Case c2 of '0'..'9': u2:=u2*16+ord(c2)-ord('0'); 'A'..'F': u2:=u2*16+ord(c2)-ord('A')+10; 'a'..'f': u2:=u2*16+ord(c2)-ord('a')+10; else Error(SErrInvalidCharacter, [CurRow,CurColumn,FTokenStr[0]]); end; end;
fpjson.pp
begin Inc(I); App:=''; Case S[I] of '\','"','/' : App:=S[I]; 'b' : App:=#8; 't' : App:=#9; 'n' : App:=#10; 'f' : App:=#12; 'r' : App:=#13; 'u' : begin U2:=BufferHexToInt(PAnsiChar(@S[I+1])); if U2=-1 then Raise EJSON.Create('Invalid unicode hex code: '+Copy(S,I+1,4)); Inc(I,4); if (U1&LtPos;>0) then begin App:={$IFDEF FPC_HAS_CPSTRING}UTF8Encode({$ENDIF}WideChar(U1)+WideChar(U2){$IFDEF FPC_HAS_CPSTRING}){$ENDIF}; U2:=0; end else U1:=U2; end;
Mantis conversion info:
- Mantis ID: 37565
- Version: 3.3.1