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:
Carsey, Jaben 2018-04-28 06:32:22 +08:00 committed by Yonghong Zhu
parent c541989741
commit c23ef28c20
2 changed files with 16 additions and 32 deletions

View File

@ -22,6 +22,7 @@ from Common.LongFilePathSupport import LongFilePath
import re
import os
from Common.GlobalData import gIdentifierPattern
from UniClassObject import StripComments
IMAGE_TOKEN = re.compile('IMAGE_TOKEN *\(([A-Z0-9_]+) *\)', re.MULTILINE | re.UNICODE)
@ -91,7 +92,7 @@ class IdfFileClassObject(object):
ImageFileList = []
for Line in FileIn.splitlines():
Line = Line.strip()
Line = self.StripComments(Line)
Line = StripComments(Line)
if len(Line) == 0:
continue
@ -121,22 +122,6 @@ class IdfFileClassObject(object):
if 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):
if FileList == []:
return ImageFileObject

View File

@ -218,6 +218,19 @@ class StringDefClassObject(object):
self.StringValueByteList = UniToHexList(self.StringValue)
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
#
# 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]
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
#
@ -406,7 +405,7 @@ class UniFileClassObject(object):
for Line in FileIn:
Line = Line.strip()
Line = Line.replace(u'\\\\', BACK_SLASH_PLACEHOLDER)
Line = self.StripComments(Line)
Line = StripComments(Line)
#
# Ignore empty line