1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
## @file
# This file is used to parse a xml file of .PKG file
#
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials are licensed and made available
# under the terms and conditions of the BSD License which accompanies this
# distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php
#
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
'''
XmlParserMisc
'''
from Object.POM.CommonObject import TextObject
from Logger.StringTable import ERR_XML_PARSER_REQUIRED_ITEM_MISSING
from Logger.ToolError import PARSER_ERROR
import Logger.Log as Logger
## ConvertVariableName()
# Convert VariableName to be L"string",
# input of UCS-2 format Hex Array or L"string" (C style.) could be converted successfully,
# others will not.
#
# @param VariableName: string need to be converted
# @retval: the L quoted string converted if success, else None will be returned
#
def ConvertVariableName(VariableName):
VariableName = VariableName.strip()
#
# check for L quoted string
#
if VariableName.startswith('L"') and VariableName.endswith('"'):
return VariableName
#
# check for Hex Array, it should be little endian even number of hex numbers
#
ValueList = VariableName.split(' ')
if len(ValueList)%2 == 1:
return None
TransferedStr = ''
Index = 0
while Index < len(ValueList):
FirstByte = int(ValueList[Index], 16)
SecondByte = int(ValueList[Index + 1], 16)
if SecondByte != 0:
return None
if FirstByte not in xrange(0x20, 0x7F):
return None
TransferedStr += ('%c')%FirstByte
Index = Index + 2
return 'L"' + TransferedStr + '"'
## IsRequiredItemListNull
#
# Check if a required XML section item/attribue is NULL
#
# @param ItemList: The list of items to be checked
# @param XmlTreeLevel: The error message tree level
#
def IsRequiredItemListNull(ItemDict, XmlTreeLevel):
for Key in ItemDict:
if not ItemDict[Key]:
Msg = "->".join(Node for Node in XmlTreeLevel)
ErrorMsg = ERR_XML_PARSER_REQUIRED_ITEM_MISSING % (Key, Msg)
Logger.Error('\nUPT', PARSER_ERROR, ErrorMsg, RaiseError=True)
## Get help text
#
# @param HelpText
#
def GetHelpTextList(HelpText):
HelpTextList = []
for HelT in HelpText:
HelpTextObj = TextObject()
HelpTextObj.SetLang(HelT.Lang)
HelpTextObj.SetString(HelT.HelpText)
HelpTextList.append(HelpTextObj)
return HelpTextList
|