浏览代码

fcl-css: TCSSString

mattias 2 年之前
父节点
当前提交
754a3749ce
共有 2 个文件被更改,包括 49 次插入47 次删除
  1. 22 22
      packages/fcl-css/src/fpcssparser.pp
  2. 27 25
      packages/fcl-css/src/fpcssscanner.pp

+ 22 - 22
packages/fcl-css/src/fpcssparser.pp

@@ -33,20 +33,20 @@ Type
     FScanner: TCSSScanner;
     FPrevious : TCSSToken;
     FCurrent : TCSSToken;
-    FCurrentTokenString : UTF8String;
+    FCurrentTokenString : TCSSString;
     FPeekToken : TCSSToken;
-    FPeekTokenString : UTF8String;
+    FPeekTokenString : TCSSString;
     FFreeScanner : Boolean;
     FRuleLevel : Integer;
     function CreateElement(aClass: TCSSElementClass): TCSSElement;
     class function GetAppendElement(aList: TCSSListElement): TCSSElement;
     function GetAtEOF: Boolean;
-    function GetCurSource: UTF8String;
+    function GetCurSource: TCSSString;
     Function GetCurLine : Integer;
     Function GetCurPos : Integer;
   protected
-    Procedure DoError(Msg : UTF8String);
-    Procedure DoError(Fmt : UTF8String; Args : Array of const);
+    Procedure DoError(Msg : TCSSString);
+    Procedure DoError(Fmt : TCSSString; Args : Array of const);
     Procedure Consume(aToken : TCSSToken);
     function ParseComponentValueList(allowRules: Boolean=True): TCSSElement;
     function ParseComponentValue: TCSSElement;
@@ -56,7 +56,7 @@ Type
     function ParseRuleList(aStopOn : TCSStoken = ctkEOF): TCSSElement;
     function ParseSelector: TCSSElement;
     function ParseDeclaration(aIsAt : Boolean = false): TCSSDeclarationElement;
-    function ParseCall(aName: UTF8String): TCSSElement;
+    function ParseCall(aName: TCSSString): TCSSElement;
     function ParseUnary: TCSSElement;
     function ParseUnit: TCSSUnits;
     function ParseIdentifier : TCSSElement;
@@ -69,7 +69,7 @@ Type
     Function ParseUnicodeRange : TCSSElement;
     function ParseArray(aPrefix: TCSSElement): TCSSElement;
     function ParseURL: TCSSElement;
-    Property CurrentSource : UTF8String Read GetCurSource;
+    Property CurrentSource : TCSSString Read GetCurSource;
     Property CurrentLine : Integer Read GetCurLine;
     Property CurrentPos : Integer Read GetCurPos;
   Public
@@ -78,7 +78,7 @@ Type
     Destructor Destroy; override;
     Function Parse : TCSSElement;
     Property CurrentToken : TCSSToken Read FCurrent;
-    Property CurrentTokenString : UTF8String Read FCurrentTokenString;
+    Property CurrentTokenString : TCSSString Read FCurrentTokenString;
     Function GetNextToken : TCSSToken;
     Function PeekNextToken : TCSSToken;
     Property Scanner : TCSSScanner Read FScanner;
@@ -95,7 +95,7 @@ Resourcestring
   SUnaryInvalidToken = 'Invalid token for unary operation: %s';
   SErrFileSource = 'Error: file "%s" line %d, pos %d: ';
   SErrSource = 'Error: line %d, pos %d: ';
-  SErrUnexpectedToken = 'Unexpected token: Got %s (as UTF8String: "%s"), expected: %s ';
+  SErrUnexpectedToken = 'Unexpected token: Got %s (as TCSSString: "%s"), expected: %s ';
   SErrInvalidFloat = 'Invalid float: %s';
   SErrUnexpectedEndOfFile = 'Unexpected EOF while scanning function args: %s';
 
@@ -141,9 +141,9 @@ begin
   Result:=(CurrentToken=ctkEOF);
 end;
 
-procedure TCSSParser.DoError(Msg: UTF8String);
+procedure TCSSParser.DoError(Msg: TCSSString);
 Var
-  ErrAt : UTF8String;
+  ErrAt : TCSSString;
 
 begin
   If Assigned(FScanner) then
@@ -154,7 +154,7 @@ begin
   Raise ECSSParser.Create(ErrAt+Msg)
 end;
 
-procedure TCSSParser.DoError(Fmt: UTF8String; Args: array of const);
+procedure TCSSParser.DoError(Fmt: TCSSString; Args: array of const);
 begin
   DoError(Format(Fmt,Args));
 end;
@@ -171,7 +171,7 @@ begin
 end;
 
 
-function TCSSParser.GetCurSource: UTF8String;
+function TCSSParser.GetCurSource: TCSSString;
 begin
   If Assigned(FScanner) then
     Result:=FScanner.CurFileName
@@ -240,7 +240,7 @@ Var
   aLast : TCSSToken;
   aList : TCSSListElement;
   {$ifdef VerboseCSSParser}
-  aAt : String;
+  aAt : TCSSString;
   {$endif}
 
 begin
@@ -287,7 +287,7 @@ end;
 
 function TCSSParser.ParseExpression: TCSSElement;
 
-    Function AllowRules(aName : String) : Boolean;
+    Function AllowRules(const aName : TCSSString) : Boolean;
 
     begin
       result:=sameText(aName,'@media') or sameText(aName,'@print');
@@ -379,7 +379,7 @@ begin
     FPeekToken:=FScanner.FetchToken;
     FPeekTokenString:=FScanner.CurTokenString;
     end;
-  {$ifdef VerboseCSSParser}Writeln('PeekNextToken : ',GetEnumName(TypeInfo(TCSSToken),Ord(FPeekToken)), ' As UTF8String: ',FPeekTokenString);{$endif VerboseCSSParser}
+  {$ifdef VerboseCSSParser}Writeln('PeekNextToken : ',GetEnumName(TypeInfo(TCSSToken),Ord(FPeekToken)), ' As TCSSString: ',FPeekTokenString);{$endif VerboseCSSParser}
   Result:=FPeekToken;
 end;
 
@@ -416,7 +416,7 @@ end;
 function TCSSParser.ParseIdentifier: TCSSElement;
 
 Var
-  aValue : UTF8String;
+  aValue : TCSSString;
   aId : TCSSIdentifierElement;
 
 begin
@@ -518,7 +518,7 @@ function TCSSParser.ParsePseudo: TCSSElement;
 
 Var
   aPseudo : TCSSPseudoClassElement;
-  aValue : string;
+  aValue : TCSSString;
 
 begin
   aValue:=CurrentTokenString;
@@ -570,7 +570,7 @@ Var
   aLast : TCSSToken;
   aList: TCSSListElement;
 {$IFDEF VerboseCSSParser}
-  aAt : String;
+  aAt : TCSSString;
 {$ENDIF}
 
 begin
@@ -831,7 +831,7 @@ begin
   end;
 end;
 
-function TCSSParser.ParseCall(aName : UTF8String): TCSSElement;
+function TCSSParser.ParseCall(aName : TCSSString): TCSSElement;
 
 var
   aCall : TCSSCallElement;
@@ -870,7 +870,7 @@ end;
 function TCSSParser.ParseString: TCSSElement;
 
 Var
-  aValue : UTF8String;
+  aValue : TCSSString;
   aEl : TCSSElement;
   aStr : TCSSStringElement;
 
@@ -897,7 +897,7 @@ end;
 
 function TCSSParser.ParseUnicodeRange: TCSSElement;
 Var
-  aValue : String;
+  aValue : TCSSString;
   aRange : TCSSUnicodeRangeElement;
 
 begin

+ 27 - 25
packages/fcl-css/src/fpcssscanner.pp

@@ -67,9 +67,11 @@ Type
    );
   TCSSTokens = Set of TCSSToken;
 
+  TCSSString = UTF8String;
+
 resourcestring
   SErrInvalidCharacter = 'Invalid character ''%s''';
-  SErrOpenString = 'UTF8String exceeds end of line';
+  SErrOpenString = 'String exceeds end of line';
   SErrIncludeFileNotFound = 'Could not find include file ''%s''';
   SInvalidHexadecimalNumber = 'Invalid decimal number';
   SErrUnknownCharacter = 'Unknown character: %s';
@@ -80,7 +82,7 @@ Type
   TLineReader = class
   public
     function IsEOF: Boolean; virtual; abstract;
-    function ReadLine: UTF8String; virtual; abstract;
+    function ReadLine: TCSSString; virtual; abstract;
   end;
 
   { TStreamLineReader }
@@ -95,7 +97,7 @@ Type
   public
     Constructor Create(AStream : TStream);
     function IsEOF: Boolean; override;
-    function ReadLine: UTF8String; override;
+    function ReadLine: TCSSString; override;
   end;
 
   TFileLineReader = class(TLineReader)
@@ -103,10 +105,10 @@ Type
     FTextFile: Text;
     FileOpened: Boolean;
   public
-    constructor Create(const AFilename: UTF8String);
+    constructor Create(const AFilename: TCSSString);
     destructor Destroy; override;
     function IsEOF: Boolean; override;
-    function ReadLine: UTF8String; override;
+    function ReadLine: TCSSString; override;
   end;
 
   { TCSSScanner }
@@ -119,11 +121,11 @@ Type
     FDisablePseudo: Boolean;
     FOptions: TCSSScannerOptions;
     FSourceFile: TLineReader;
-    FSourceFilename: UTF8String;
+    FSourceFilename: TCSSString;
     FCurRow: Integer;
     FCurToken: TCSSToken;
-    FCurTokenString: UTF8String;
-    FCurLine: UTF8String;
+    FCurTokenString: TCSSString;
+    FCurLine: TCSSString;
     TokenStr: PChar;
     FSourceStream : TStream;
     FOwnSourceFile : Boolean;
@@ -144,27 +146,27 @@ Type
     function ReadUnicodeEscape: WideChar;
     procedure SetReturnComments(AValue: Boolean);
     procedure SetReturnWhiteSpace(AValue: Boolean);
-    class function UnknownCharToStr(C: Char): String;
+    class function UnknownCharToStr(C: Char): TCSSString;
   protected
-    procedure DoError(const Msg: UTF8String; Args: array of const); overload;
-    procedure DoError(const Msg: UTF8String); overload;
+    procedure DoError(const Msg: TCSSString; Args: array of const); overload;
+    procedure DoError(const Msg: TCSSString); overload;
     function DoFetchToken: TCSSToken; virtual;
   public
     constructor Create(ALineReader: TLineReader);
     constructor Create(AStream : TStream);
     destructor Destroy; override;
-    procedure OpenFile(const AFilename: UTF8String);
+    procedure OpenFile(const AFilename: TCSSString);
     Function FetchToken: TCSSToken;
     Property ReturnComments : Boolean Read GetReturnComments Write SetReturnComments;
     Property ReturnWhiteSpace : Boolean Read GetReturnWhiteSpace Write SetReturnWhiteSpace;
     Property Options : TCSSScannerOptions Read FOptions Write FOptions;
     property SourceFile: TLineReader read FSourceFile;
-    property CurFilename: UTF8String read FSourceFilename;
-    property CurLine: UTF8String read FCurLine;
+    property CurFilename: TCSSString read FSourceFilename;
+    property CurLine: TCSSString read FCurLine;
     property CurRow: Integer read FCurRow;
     property CurColumn: Integer read GetCurColumn;
     property CurToken: TCSSToken read FCurToken;
-    property CurTokenString: UTF8String read FCurTokenString;
+    property CurTokenString: TCSSString read FCurTokenString;
     Property DisablePseudo : Boolean Read FDisablePseudo Write FDisablePseudo;
   end;
 
@@ -180,7 +182,7 @@ Const
   WhiteSpaceEx = WhiteSpace+[#0];
 
 
-constructor TFileLineReader.Create(const AFilename: UTF8String);
+constructor TFileLineReader.Create(const AFilename: TCSSString);
 begin
   inherited Create;
   Assign(FTextFile, AFilename);
@@ -200,7 +202,7 @@ begin
   Result := EOF(FTextFile);
 end;
 
-function TFileLineReader.ReadLine: UTF8String;
+function TFileLineReader.ReadLine: TCSSString;
 begin
   ReadLn(FTextFile, Result);
 end;
@@ -225,7 +227,7 @@ begin
   inherited Destroy;
 end;
 
-procedure TCSSScanner.OpenFile(const AFilename: UTF8String);
+procedure TCSSScanner.OpenFile(const AFilename: TCSSString);
 begin
   FSourceFile := TFileLineReader.Create(AFilename);
   FSourceFilename := AFilename;
@@ -347,7 +349,7 @@ const
   Hex = ['0'..'9','A'..'F','a'..'f' ];
 
 Var
-  S : UTF8String;
+  S : TCSSString;
   I : Integer;
   HaveHex : Boolean;
 
@@ -388,7 +390,7 @@ Var
   Delim : Char;
   TokenStart : PChar;
   Len,OLen: Integer;
-  S : UTF8String;
+  S : TCSSString;
 
 begin
   Delim:=TokenStr[0];
@@ -561,7 +563,7 @@ begin
 
 end;
 
-Class Function TCSSScanner.UnknownCharToStr(C: Char) : String;
+class function TCSSScanner.UnknownCharToStr(C: Char): TCSSString;
 
 begin
   if C=#0 then
@@ -788,15 +790,15 @@ begin
   end; // Case
 end;
 
-procedure TCSSScanner.DoError(const Msg: UTF8String; Args: array of const);
+procedure TCSSScanner.DoError(const Msg: TCSSString; Args: array of const);
 begin
   DoError(Format(Msg,Args));
 end;
 
-procedure TCSSScanner.DoError(const Msg: UTF8String);
+procedure TCSSScanner.DoError(const Msg: TCSSString);
 
 Var
-  S : UTF8String;
+  S : TCSSString;
 
 begin
   S:=Format('Error at (%d,%d): ',[CurRow,CurColumn])+Msg;
@@ -848,7 +850,7 @@ begin
   FBufPos:=0;
 end;
 
-function TStreamLineReader.ReadLine: UTF8String;
+function TStreamLineReader.ReadLine: TCSSString;
 
 Var
   FPos,OLen,Len: Integer;