本文整理匯總了Python中jasy.js.parse.Node.Node.parenthesized方法的典型用法代碼示例。如果您正苦於以下問題:Python Node.parenthesized方法的具體用法?Python Node.parenthesized怎麽用?Python Node.parenthesized使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類jasy.js.parse.Node.Node
的用法示例。
在下文中一共展示了Node.parenthesized方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: __recurser
# 需要導入模塊: from jasy.js.parse.Node import Node [as 別名]
# 或者: from jasy.js.parse.Node.Node import parenthesized [as 別名]
def __recurser(self, node):
# Process children
for child in list(node):
if child != None:
self.__recurser(child)
if node.type == "call":
funcName = None
if node[0].type == "identifier":
funcName = node[0].value
elif node[0].type == "dot" and node[0][1].type == "identifier":
funcName = node[0][1].value
if funcName in ("tr", "trc", "trn", "marktr"):
params = node[1]
table = self.__table
# Remove marktr() calls
if funcName == "marktr":
node.parent.remove(node)
# Verify param types
elif params[0].type is not "string":
# maybe something marktr() relevant being used, in this case we need to keep the call and inline the data
pass
# Error handling
elif (funcName == "trn" or funcName == "trc") and params[1].type != "string":
warn("Expecting translation string to be type string: %s at line %s" % (params[1].type, params[1].line))
# Signature tr(msg, arg1, arg2, ...)
elif funcName == "tr":
key = params[0].value
if key in table:
params[0].value = table[key]
if len(params) == 1:
node.parent.replace(node, params[0])
else:
self.__splitTemplate(node, params[0], params[1:])
# Signature trc(hint, msg, arg1, arg2, ...)
elif funcName == "trc":
key = params[0].value
if key in table:
params[1].value = table[key]
if len(params) == 2:
node.parent.replace(node, params[1])
else:
self.__splitTemplate(node, params[1], params[2:])
# Signature trn(msg, msg2, [...], int, arg1, arg2, ...)
elif funcName == "trn":
keySingular = params[0].value
if keySingular in table:
params[0].value = table[keySingular]
keyPlural = params[1].value
if keyPlural in table:
params[1].value = table[keyPlural]
# TODO: Multi plural support
# Patch strings with dynamic values
if len(params) >= 3:
self.__splitTemplate(params[0], params[0], params[3:])
self.__splitTemplate(params[1], params[1], params[3:])
# Replace the whole call with: int < 2 ? singularMessage : pluralMessage
hook = Node(None, "hook")
hook.parenthesized = True
condition = Node(None, "le")
condition.append(params[2])
number = Node(None, "number")
number.value = 1
condition.append(number)
hook.append(condition, "condition")
hook.append(params[1], "elsePart")
hook.append(params[0], "thenPart")
node.parent.replace(node, hook)