BaseTools: AutoGen - share StripComments API
add the API root in one class file. delete the static API out of both classes. share it in the single location. Cc: Liming Gao <liming.gao@intel.com> Cc: Yonghong Zhu <yonghong.zhu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
parent
c541989741
commit
c23ef28c20
@ -22,6 +22,7 @@ from Common.LongFilePathSupport import LongFilePath
|
|||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
from Common.GlobalData import gIdentifierPattern
|
from Common.GlobalData import gIdentifierPattern
|
||||||
|
from UniClassObject import StripComments
|
||||||
|
|
||||||
IMAGE_TOKEN = re.compile('IMAGE_TOKEN *\(([A-Z0-9_]+) *\)', re.MULTILINE | re.UNICODE)
|
IMAGE_TOKEN = re.compile('IMAGE_TOKEN *\(([A-Z0-9_]+) *\)', re.MULTILINE | re.UNICODE)
|
||||||
|
|
||||||
@ -91,7 +92,7 @@ class IdfFileClassObject(object):
|
|||||||
ImageFileList = []
|
ImageFileList = []
|
||||||
for Line in FileIn.splitlines():
|
for Line in FileIn.splitlines():
|
||||||
Line = Line.strip()
|
Line = Line.strip()
|
||||||
Line = self.StripComments(Line)
|
Line = StripComments(Line)
|
||||||
if len(Line) == 0:
|
if len(Line) == 0:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@ -121,22 +122,6 @@ class IdfFileClassObject(object):
|
|||||||
if ImageFileList:
|
if ImageFileList:
|
||||||
self.ImageFilesDict[File] = ImageFileList
|
self.ImageFilesDict[File] = ImageFileList
|
||||||
|
|
||||||
def StripComments(self, Line):
|
|
||||||
Comment = '//'
|
|
||||||
CommentPos = Line.find(Comment)
|
|
||||||
while CommentPos >= 0:
|
|
||||||
# if there are non matched quotes before the comment header
|
|
||||||
# then we are in the middle of a string
|
|
||||||
# but we need to ignore the escaped quotes and backslashes.
|
|
||||||
if ((Line.count('"', 0, CommentPos) - Line.count('\\"', 0, CommentPos)) & 1) == 1:
|
|
||||||
CommentPos = Line.find (Comment, CommentPos + 1)
|
|
||||||
else:
|
|
||||||
return Line[:CommentPos].strip()
|
|
||||||
return Line.strip()
|
|
||||||
|
|
||||||
def ImageDecoder(self, File):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def SearchImageID(ImageFileObject, FileList):
|
def SearchImageID(ImageFileObject, FileList):
|
||||||
if FileList == []:
|
if FileList == []:
|
||||||
return ImageFileObject
|
return ImageFileObject
|
||||||
|
@ -218,6 +218,19 @@ class StringDefClassObject(object):
|
|||||||
self.StringValueByteList = UniToHexList(self.StringValue)
|
self.StringValueByteList = UniToHexList(self.StringValue)
|
||||||
self.Length = len(self.StringValueByteList)
|
self.Length = len(self.StringValueByteList)
|
||||||
|
|
||||||
|
def StripComments(Line):
|
||||||
|
Comment = u'//'
|
||||||
|
CommentPos = Line.find(Comment)
|
||||||
|
while CommentPos >= 0:
|
||||||
|
# if there are non matched quotes before the comment header
|
||||||
|
# then we are in the middle of a string
|
||||||
|
# but we need to ignore the escaped quotes and backslashes.
|
||||||
|
if ((Line.count(u'"', 0, CommentPos) - Line.count(u'\\"', 0, CommentPos)) & 1) == 1:
|
||||||
|
CommentPos = Line.find (Comment, CommentPos + 1)
|
||||||
|
else:
|
||||||
|
return Line[:CommentPos].strip()
|
||||||
|
return Line.strip()
|
||||||
|
|
||||||
## UniFileClassObject
|
## UniFileClassObject
|
||||||
#
|
#
|
||||||
# A structure for .uni file definition
|
# A structure for .uni file definition
|
||||||
@ -371,20 +384,6 @@ class UniFileClassObject(object):
|
|||||||
FileName = Item[Item.find(u'#include ') + len(u'#include ') :Item.find(u' ', len(u'#include '))][1:-1]
|
FileName = Item[Item.find(u'#include ') + len(u'#include ') :Item.find(u' ', len(u'#include '))][1:-1]
|
||||||
self.LoadUniFile(FileName)
|
self.LoadUniFile(FileName)
|
||||||
|
|
||||||
def StripComments(self, Line):
|
|
||||||
Comment = u'//'
|
|
||||||
CommentPos = Line.find(Comment)
|
|
||||||
while CommentPos >= 0:
|
|
||||||
# if there are non matched quotes before the comment header
|
|
||||||
# then we are in the middle of a string
|
|
||||||
# but we need to ignore the escaped quotes and backslashes.
|
|
||||||
if ((Line.count(u'"', 0, CommentPos) - Line.count(u'\\"', 0, CommentPos)) & 1) == 1:
|
|
||||||
CommentPos = Line.find (Comment, CommentPos + 1)
|
|
||||||
else:
|
|
||||||
return Line[:CommentPos].strip()
|
|
||||||
return Line.strip()
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Pre-process before parse .uni file
|
# Pre-process before parse .uni file
|
||||||
#
|
#
|
||||||
@ -406,7 +405,7 @@ class UniFileClassObject(object):
|
|||||||
for Line in FileIn:
|
for Line in FileIn:
|
||||||
Line = Line.strip()
|
Line = Line.strip()
|
||||||
Line = Line.replace(u'\\\\', BACK_SLASH_PLACEHOLDER)
|
Line = Line.replace(u'\\\\', BACK_SLASH_PLACEHOLDER)
|
||||||
Line = self.StripComments(Line)
|
Line = StripComments(Line)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ignore empty line
|
# Ignore empty line
|
||||||
|
Loading…
x
Reference in New Issue
Block a user