#\r
# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>\r
#\r
-# This program and the accompanying materials are licensed and made available \r
-# under the terms and conditions of the BSD License which accompanies this \r
-# distribution. The full text of the license may be found at \r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution. The full text of the license may be found at\r
# http://opensource.org/licenses/bsd-license.php\r
#\r
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
if LangName.isalpha() and gLANG_CONV_TABLE.get(LangName.lower()):\r
return LangName\r
else:\r
- EdkLogger.Error("Unicode File Parser", \r
+ EdkLogger.Error("Unicode File Parser",\r
ToolError.FORMAT_INVALID,\r
- "Invalid RFC 1766 language code : %s" % LangName, \r
+ "Invalid RFC 1766 language code : %s" % LangName,\r
File)\r
elif length == 5:\r
if LangName[0:2].isalpha() and LangName[2] == '-':\r
if Key == LangName[0:3].lower():\r
return Key\r
\r
- EdkLogger.Error("Unicode File Parser", \r
+ EdkLogger.Error("Unicode File Parser",\r
ToolError.FORMAT_INVALID,\r
- "Invalid RFC 4646 language code : %s" % LangName, \r
+ "Invalid RFC 4646 language code : %s" % LangName,\r
File)\r
- \r
+\r
## GetLanguageCode\r
#\r
# Check the language code read from .UNI file and convert RFC 1766 codes to RFC 4646 codes if appropriate\r
return TempLangName\r
return LangName\r
else:\r
- EdkLogger.Error("Unicode File Parser", \r
+ EdkLogger.Error("Unicode File Parser",\r
ToolError.FORMAT_INVALID,\r
- "Invalid RFC 1766 language code : %s" % LangName, \r
+ "Invalid RFC 1766 language code : %s" % LangName,\r
File)\r
if (LangName[0] == 'X' or LangName[0] == 'x') and LangName[1] == '-':\r
return LangName\r
if LangName[0:3].isalpha() and gLANG_CONV_TABLE.get(LangName.lower()) is None and LangName[3] == '-':\r
return LangName\r
\r
- EdkLogger.Error("Unicode File Parser", \r
+ EdkLogger.Error("Unicode File Parser",\r
ToolError.FORMAT_INVALID,\r
- "Invalid RFC 4646 language code : %s" % LangName, \r
+ "Invalid RFC 4646 language code : %s" % LangName,\r
File)\r
\r
## FormatUniEntry\r
PreFormatLength = 40\r
if len(StrTokenName) > PreFormatLength:\r
PreFormatLength = len(StrTokenName) + 1\r
- for (Lang, Value) in TokenValueList: \r
+ for (Lang, Value) in TokenValueList:\r
if not Value or Lang == DT.TAB_LANGUAGE_EN_X:\r
continue\r
if Lang == '':\r
except UnicodeError as Xstr:\r
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16_le').readlines()\r
except:\r
- EdkLogger.Error("Unicode File Parser", \r
- ToolError.FILE_OPEN_FAILURE, \r
+ EdkLogger.Error("Unicode File Parser",\r
+ ToolError.FILE_OPEN_FAILURE,\r
"File read failure: %s" % str(Xstr),\r
ExtraData=File)\r
LineNo = GetLineNo(FileIn, Line, False)\r
- EdkLogger.Error("Unicode File Parser", \r
+ EdkLogger.Error("Unicode File Parser",\r
ToolError.PARSER_ERROR,\r
- "Wrong language definition", \r
- ExtraData="""%s\n\t*Correct format is like '#langdef en-US "English"'""" % Line, \r
+ "Wrong language definition",\r
+ ExtraData="""%s\n\t*Correct format is like '#langdef en-US "English"'""" % Line,\r
File = File, Line = LineNo)\r
else:\r
LangName = GetLanguageCode(Lang[1], self.IsCompatibleMode, self.File)\r
if not IsLangInDef:\r
#\r
# The found STRING tokens will be added into new language string list\r
- # so that the unique STRING identifier is reserved for all languages in the package list. \r
+ # so that the unique STRING identifier is reserved for all languages in the package list.\r
#\r
FirstLangName = self.LanguageDef[0][0]\r
if LangName != FirstLangName:\r
OtherLang = Item.UseOtherLangDef\r
else:\r
OtherLang = FirstLangName\r
- self.OrderedStringList[LangName].append (StringDefClassObject(Item.StringName, \r
- '', \r
- Item.Referenced, \r
- Item.Token, \r
+ self.OrderedStringList[LangName].append (StringDefClassObject(Item.StringName,\r
+ '',\r
+ Item.Referenced,\r
+ Item.Token,\r
OtherLang))\r
self.OrderedStringDict[LangName][Item.StringName] = len(self.OrderedStringList[LangName]) - 1\r
return True\r
if Name != '':\r
MatchString = re.match('[A-Z0-9_]+', Name, re.UNICODE)\r
if MatchString is None or MatchString.end(0) != len(Name):\r
- EdkLogger.Error("Unicode File Parser", \r
+ EdkLogger.Error("Unicode File Parser",\r
ToolError.FORMAT_INVALID,\r
'The string token name %s in UNI file %s must be upper case character.' %(Name, self.File))\r
LanguageList = Item.split(u'#language ')\r
Language = LanguageList[IndexI].split()[0]\r
#.replace(u'\r\n', u'')\r
Value = \\r
- LanguageList[IndexI][LanguageList[IndexI].find(u'\"') + len(u'\"') : LanguageList[IndexI].rfind(u'\"')] \r
+ LanguageList[IndexI][LanguageList[IndexI].find(u'\"') + len(u'\"') : LanguageList[IndexI].rfind(u'\"')]\r
Language = GetLanguageCode(Language, self.IsCompatibleMode, self.File)\r
self.AddStringToList(Name, Language, Value)\r
\r
#\r
def PreProcess(self, File, IsIncludeFile=False):\r
if not os.path.exists(File.Path) or not os.path.isfile(File.Path):\r
- EdkLogger.Error("Unicode File Parser", \r
+ EdkLogger.Error("Unicode File Parser",\r
ToolError.FILE_NOT_FOUND,\r
ExtraData=File.Path)\r
\r
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16_le').readlines()\r
except:\r
EdkLogger.Error("Unicode File Parser", ToolError.FILE_OPEN_FAILURE, ExtraData=File.Path)\r
- \r
- \r
+\r
+\r
#\r
# get the file header\r
#\r
if Line.startswith(DT.TAB_COMMENT_EDK1_SPLIT) and HeaderStart and not HeaderEnd and FirstGenHeader:\r
self.UniFileHeader += Line + '\r\n'\r
continue\r
- \r
+\r
#\r
# Use unique identifier\r
#\r
Line = Line.strip()\r
#\r
# Ignore comment line and empty line\r
- # \r
+ #\r
if Line == u'' or Line.startswith(u'//'):\r
#\r
# Change the single line String entry flag status\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
else:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
- \r
+\r
Line = Line.replace(UNICODE_WIDE_CHAR, WIDE_CHAR)\r
Line = Line.replace(UNICODE_NARROW_CHAR, NARROW_CHAR)\r
Line = Line.replace(UNICODE_NON_BREAKING_CHAR, NON_BREAKING_CHAR)\r
#\r
if Line.startswith(u'#string') and Line.find(u'#language') == -1:\r
MultiLineFeedExits = True\r
- \r
+\r
if Line.startswith(u'#string') and Line.find(u'#language') > 0 and Line.find(u'"') < 0:\r
MultiLineFeedExits = True\r
- \r
+\r
#\r
# Between Language entry and String entry can not contain line feed\r
#\r
if Line.startswith(u'#language') and len(Line.split()) == 2:\r
MultiLineFeedExits = True\r
- \r
+\r
#\r
# Between two String entry, can not contain line feed\r
#\r
StringEntryExistsFlag = 0\r
\r
Lines.append(Line)\r
- \r
+\r
#\r
# Convert string def format as below\r
#\r
# "Mi segunda secuencia 1"\r
# "Mi segunda secuencia 2"\r
#\r
- \r
+\r
if not IsIncludeFile and not Lines:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_NO_SECTION_EXIST, \\r
- ExtraData=File.Path) \r
+ ExtraData=File.Path)\r
\r
NewLines = []\r
StrName = u''\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_STRNAME_FORMAT_ERROR % StrName.split()[1], \\r
ExtraData=File.Path)\r
- \r
+\r
if StrName and len(StrName.split()[1].split(DT.TAB_UNDERLINE_SPLIT)) == 4:\r
StringTokenList = StrName.split()[1].split(DT.TAB_UNDERLINE_SPLIT)\r
if (StringTokenList[3].upper() in [DT.TAB_STR_TOKENPROMPT, DT.TAB_STR_TOKENHELP] and \\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_STRTOKEN_FORMAT_ERROR % StrName.split()[1], \\r
ExtraData=File.Path)\r
- \r
+\r
if Line.count(u'#language') > 1:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_SEP_LANGENTRY_LINE % Line, \\r
- ExtraData=File.Path) \r
- \r
+ ExtraData=File.Path)\r
+\r
if Line.startswith(u'//'):\r
continue\r
elif Line.startswith(u'#langdef'):\r
if len(Line.split()) == 2:\r
NewLines.append(Line)\r
continue\r
- elif len(Line.split()) > 2 and Line.find(u'"') > 0: \r
+ elif len(Line.split()) > 2 and Line.find(u'"') > 0:\r
NewLines.append(Line[:Line.find(u'"')].strip())\r
NewLines.append(Line[Line.find(u'"'):])\r
else:\r
if Line[Line.find(u'#language')-1] != ' ' or \\r
Line[Line.find(u'#language')+len(u'#language')] != u' ':\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
- \r
+\r
if Line.find(u'"') > 0:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
- \r
+\r
StrName = Line.split()[0] + u' ' + Line.split()[1]\r
if StrName:\r
if StrName.split()[1] not in ExistStrNameList:\r
if Line[Line.find(u'#language')-1] != u' ' or \\r
Line[Line.find(u'#language')+len(u'#language')] != u' ':\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
- \r
+\r
if Line[Line.find(u'"')-1] != u' ':\r
- EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path) \r
- \r
- StrName = Line.split()[0] + u' ' + Line.split()[1] \r
+ EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
+\r
+ StrName = Line.split()[0] + u' ' + Line.split()[1]\r
if StrName:\r
if StrName.split()[1] not in ExistStrNameList:\r
ExistStrNameList.append(StrName.split()[1].strip())\r
DT.TAB_DEC_BINARY_ABSTRACT, DT.TAB_DEC_BINARY_DESCRIPTION]:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_MULTI_ENTRY_EXIST % StrName.split()[1], \\r
- ExtraData=File.Path) \r
+ ExtraData=File.Path)\r
if IsIncludeFile:\r
if StrName not in NewLines:\r
NewLines.append((Line[:Line.find(u'#language')]).strip())\r
- else: \r
+ else:\r
NewLines.append((Line[:Line.find(u'#language')]).strip())\r
NewLines.append((Line[Line.find(u'#language'):Line.find(u'"')]).strip())\r
NewLines.append((Line[Line.find(u'"'):]).strip())\r
else:\r
print(Line)\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
- \r
+\r
if StrName and not StrName.split()[1].startswith(u'STR_'):\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_STRNAME_FORMAT_ERROR % StrName.split()[1], \\r
- ExtraData=File.Path) \r
- \r
+ ExtraData=File.Path)\r
+\r
if StrName and not NewLines:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNI_MISS_LANGENTRY % StrName, \\r
ExtraData=File.Path)\r
- \r
+\r
#\r
# Check Abstract, Description, BinaryAbstract and BinaryDescription order,\r
# should be Abstract, Description, BinaryAbstract, BinaryDesctiption\r
BinaryDescriptionPosition = ExistStrNameList.index(StrName)\r
else:\r
DescriptionPosition = ExistStrNameList.index(StrName)\r
- \r
+\r
OrderList = sorted([AbstractPosition, DescriptionPosition])\r
BinaryOrderList = sorted([BinaryAbstractPosition, BinaryDescriptionPosition])\r
Min = OrderList[0]\r
BinaryMax > Max):\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_ENTRY_ORDER_WRONG, \\r
- ExtraData=File.Path) \r
+ ExtraData=File.Path)\r
elif BinaryAbstractPosition > -1:\r
if not(BinaryAbstractPosition > Max):\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_ENTRY_ORDER_WRONG, \\r
- ExtraData=File.Path) \r
- \r
+ ExtraData=File.Path)\r
+\r
if DescriptionPosition > -1:\r
if not(DescriptionPosition == Max and AbstractPosition == Min and \\r
DescriptionPosition > AbstractPosition):\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \\r
Message=ST.ERR_UNIPARSE_ENTRY_ORDER_WRONG, \\r
- ExtraData=File.Path) \r
- \r
+ ExtraData=File.Path)\r
+\r
if not self.UniFileHeader:\r
- EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \r
+ EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,\r
Message = ST.ERR_NO_SOURCE_HEADER,\r
ExtraData=File.Path)\r
- \r
+\r
return NewLines\r
\r
#\r
#\r
def LoadUniFile(self, File = None):\r
if File is None:\r
- EdkLogger.Error("Unicode File Parser", \r
- ToolError.PARSER_ERROR, \r
- Message='No unicode file is given', \r
+ EdkLogger.Error("Unicode File Parser",\r
+ ToolError.PARSER_ERROR,\r
+ Message='No unicode file is given',\r
ExtraData=File.Path)\r
- \r
+\r
self.File = File\r
- \r
+\r
#\r
# Process special char in file\r
#\r
SecondLine.find(u'#string ') < 0 and SecondLine.find(u'#language ') >= 0 and \\r
ThirdLine.find(u'#string ') < 0 and ThirdLine.find(u'#language ') < 0:\r
if Line.find('"') > 0 or SecondLine.find('"') > 0:\r
- EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, \r
+ EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,\r
Message=ST.ERR_UNIPARSE_DBLQUOTE_UNMATCHED,\r
ExtraData=File.Path)\r
- \r
+\r
Name = Line[Line.find(u'#string ') + len(u'#string ') : ].strip(' ')\r
Language = SecondLine[SecondLine.find(u'#language ') + len(u'#language ') : ].strip(' ')\r
for IndexJ in range(IndexI + 2, len(Lines)):\r
for LangNameItem in self.LanguageDef:\r
if Language == LangNameItem[0]:\r
break\r
- \r
+\r
if Language not in self.OrderedStringList:\r
self.OrderedStringList[Language] = []\r
self.OrderedStringDict[Language] = {}\r
- \r
+\r
IsAdded = True\r
if Name in self.OrderedStringDict[Language]:\r
IsAdded = False\r
ItemIndexInList = self.OrderedStringDict[Language][Name]\r
Item = self.OrderedStringList[Language][ItemIndexInList]\r
Item.UpdateValue(Value)\r
- Item.UseOtherLangDef = '' \r
+ Item.UseOtherLangDef = ''\r
\r
if IsAdded:\r
Token = len(self.OrderedStringList[Language])\r
if Index == -1:\r
- self.OrderedStringList[Language].append(StringDefClassObject(Name, \r
- Value, \r
- Referenced, \r
- Token, \r
+ self.OrderedStringList[Language].append(StringDefClassObject(Name,\r
+ Value,\r
+ Referenced,\r
+ Token,\r
UseOtherLangDef))\r
self.OrderedStringDict[Language][Name] = Token\r
for LangName in self.LanguageDef:\r
#\r
# New STRING token will be added into all language string lists.\r
- # so that the unique STRING identifier is reserved for all languages in the package list. \r
+ # so that the unique STRING identifier is reserved for all languages in the package list.\r
#\r
if LangName[0] != Language:\r
if UseOtherLangDef != '':\r
OtherLangDef = UseOtherLangDef\r
else:\r
OtherLangDef = Language\r
- self.OrderedStringList[LangName[0]].append(StringDefClassObject(Name, \r
- '', \r
- Referenced, \r
- Token, \r
+ self.OrderedStringList[LangName[0]].append(StringDefClassObject(Name,\r
+ '',\r
+ Referenced,\r
+ Token,\r
OtherLangDef))\r
self.OrderedStringDict[LangName[0]][Name] = len(self.OrderedStringList[LangName[0]]) - 1\r
else:\r
- self.OrderedStringList[Language].insert(Index, StringDefClassObject(Name, \r
- Value, \r
- Referenced, \r
- Token, \r
+ self.OrderedStringList[Language].insert(Index, StringDefClassObject(Name,\r
+ Value,\r
+ Referenced,\r
+ Token,\r
UseOtherLangDef))\r
self.OrderedStringDict[Language][Name] = Index\r
\r
print(Item)\r
for Member in self.OrderedStringList[Item]:\r
print(str(Member))\r
- \r
+\r
#\r
- # Read content from '!include' UNI file \r
+ # Read content from '!include' UNI file\r
#\r
def ReadIncludeUNIfile(self, FilaPath):\r
if self.File:\r
pass\r
- \r
+\r
if not os.path.exists(FilaPath) or not os.path.isfile(FilaPath):\r
- EdkLogger.Error("Unicode File Parser", \r
+ EdkLogger.Error("Unicode File Parser",\r
ToolError.FILE_NOT_FOUND,\r
ExtraData=FilaPath)\r
try:\r