# @retval NewUni: The converted unicode string\r
#\r
def ConvertSpecialUnicodes(Uni):\r
- NewUni = Uni\r
+ OldUni = NewUni = Uni\r
NewUni = NewUni.replace(u'\u00A9', '(c)')\r
NewUni = NewUni.replace(u'\u00AE', '(r)')\r
NewUni = NewUni.replace(u'\u2122', '(tm)')\r
+ if OldUni == NewUni:\r
+ NewUni = OldUni\r
return NewUni\r
\r
## GetLanguageCode1766\r
#\r
# Check the language code read from .UNI file and convert RFC 4646 codes to RFC 1766 codes\r
-# RFC 1766 language codes supported in compatiblity mode\r
+# RFC 1766 language codes supported in compatibility mode\r
# RFC 4646 language codes supported in native mode\r
#\r
# @param LangName: Language codes read from .UNI file\r
#\r
-# @retval LangName: Valid lanugage code in RFC 1766 format or None\r
+# @retval LangName: Valid language code in RFC 1766 format or None\r
#\r
def GetLanguageCode1766(LangName, File=None):\r
return LangName\r
## GetLanguageCode\r
#\r
# Check the language code read from .UNI file and convert RFC 1766 codes to RFC 4646 codes if appropriate\r
-# RFC 1766 language codes supported in compatiblity mode\r
+# RFC 1766 language codes supported in compatibility mode\r
# RFC 4646 language codes supported in native mode\r
#\r
# @param LangName: Language codes read from .UNI file\r
\r
## FormatUniEntry\r
#\r
-# Formated the entry in Uni file.\r
+# Formatted the entry in Uni file.\r
#\r
# @param StrTokenName StrTokenName.\r
# @param TokenValueList A list need to be processed.\r
# @param ContainerFile ContainerFile.\r
#\r
-# @return formated entry\r
+# @return formatted entry\r
def FormatUniEntry(StrTokenName, TokenValueList, ContainerFile):\r
SubContent = ''\r
PreFormatLength = 40\r
MultiLineFeedExits = False\r
#\r
# 0: initial value\r
- # 1: signle String entry exist\r
- # 2: line feed exist under the some signle String entry\r
+ # 1: single String entry exist\r
+ # 2: line feed exist under the some single String entry\r
#\r
StringEntryExistsFlag = 0\r
for Line in FileIn:\r
StringEntryExistsFlag = 2\r
#\r
# If the '#string' line and the '#language' line are not in the same line,\r
- # there should be only one line feed character betwwen them\r
+ # there should be only one line feed character between them\r
#\r
if MultiLineFeedExits:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
\r
MultiLineFeedExits = False\r
#\r
- # Process comment embeded in string define lines\r
+ # Process comment embedded in string define lines\r
#\r
FindFlag = Line.find(u'//')\r
if FindFlag != -1 and Line.find(u'//') < Line.find(u'"'):\r
FileIn[LineCount-1] = Line\r
FileIn[LineCount] = '\r\n'\r
LineCount -= 1\r
- for Index in xrange (LineCount + 1, len (FileIn) - 1):\r
+ for Index in range (LineCount + 1, len (FileIn) - 1):\r
if (Index == len(FileIn) -1):\r
FileIn[Index] = '\r\n'\r
else:\r
if Line.startswith(u'#language') and len(Line.split()) == 2:\r
MultiLineFeedExits = True\r
\r
+ #\r
+ # Check the situation that there only has one '"' for the language entry\r
+ #\r
+ if Line.startswith(u'#string') and Line.find(u'#language') > 0 and Line.count(u'"') == 1:\r
+ EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,\r
+ ExtraData='''The line %s misses '"' at the end of it in file %s'''\r
+ % (LineCount, File.Path))\r
+\r
+ #\r
+ # Check the situation that there has more than 2 '"' for the language entry\r
+ #\r
+ if Line.startswith(u'#string') and Line.find(u'#language') > 0 and Line.replace(u'\\"', '').count(u'"') > 2:\r
+ EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,\r
+ ExtraData='''The line %s has more than 2 '"' for language entry in file %s'''\r
+ % (LineCount, File.Path))\r
+\r
#\r
# Between two String entry, can not contain line feed\r
#\r
else:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
elif Line.startswith(u'"'):\r
+ #\r
+ # Check the situation that there has more than 2 '"' for the language entry\r
+ #\r
+ if Line.replace(u'\\"', '').count(u'"') > 2:\r
+ EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,\r
+ ExtraData='''The line %s has more than 2 '"' for language entry in file %s'''\r
+ % (LineCount, File.Path))\r
if u'#string' in Line or u'#language' in Line:\r
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID, ExtraData=File.Path)\r
NewLines.append(Line)\r
\r
#\r
# Check Abstract, Description, BinaryAbstract and BinaryDescription order,\r
- # should be Abstract, Description, BinaryAbstract, BinaryDesctiption\r
+ # should be Abstract, Description, BinaryAbstract, BinaryDescription\r
AbstractPosition = -1\r
DescriptionPosition = -1\r
BinaryAbstractPosition = -1\r