本文整理汇总了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)