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:
		
				
					committed by
					
						
						Yonghong Zhu
					
				
			
			
				
	
			
			
			
						parent
						
							c541989741
						
					
				
				
					commit
					c23ef28c20
				
			@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user