本文整理汇总了Python中xml.etree.ElementTree.SubElement.attrib["s"]方法的典型用法代码示例。如果您正苦于以下问题:Python SubElement.attrib["s"]方法的具体用法?Python SubElement.attrib["s"]怎么用?Python SubElement.attrib["s"]使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xml.etree.ElementTree.SubElement
的用法示例。
在下文中一共展示了SubElement.attrib["s"]方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: generate_snap
# 需要导入模块: from xml.etree.ElementTree import SubElement [as 别名]
# 或者: from xml.etree.ElementTree.SubElement import attrib["s"] [as 别名]
def generate_snap(descriptor, language):
root = Element("blocks", {
"app": "Snap! 4.0, http://snap.berkeley.edu",
"version": "1",
})
menus = language.get_menus(descriptor.menus)
for block in descriptor.blocks:
defn = SubElement(root, "block-definition", {
"type": "%s" % block.shape, # Can't use a future.builtins.str
"category": "other",
})
if block.help_text:
comment = SubElement(defn, "comment", w="360", collapsed="false")
comment.text = block.help_text
SubElement(defn, "header")
SubElement(defn, "code")
inputs = SubElement(defn, "inputs")
snap_spec = ""
for part in block.parts:
if isinstance(part, Input):
input_el = SubElement(inputs, "input", {
"type": "%{shape}".format(shape=INPUT_SELECTORS[part.shape]),
"readonly": "true" if part.shape == "m" else "",
})
input_el.text = str(part.default)
if "menu" in part.shape:
options = SubElement(input_el, "options")
options.text = "\n".join(menus[part.menu])
# TODO menus
# XXX ^ why is there a todo comment here?
index = block.inputs.index(part)
part = "%'arg-{}'".format(index)
else:
assert isinstance(part, str)
# Snap! doesn't allow %-signs in block text yet.
part = re.compile(r" *% *").sub(" ", part)
snap_spec += part
defn.attrib["s"] = snap_spec
http_block = Element("block", s="reportURL")
join_block = SubElement(http_block, "block", s="reportJoinWords")
list_ = SubElement(join_block, "list")
url = "localhost:{descriptor.port}/{block.selector}".format(**vars())
if block.is_blocking:
url += "/-" # Blank request id
SubElement(list_, "l").text = url
for index, input_ in enumerate(block.inputs):
SubElement(list_, "l").text = "/"
encode = SubElement(list_, "block", s="reportTextFunction")
l = SubElement(encode, "l")
SubElement(l, "option").text = "encode URI component"
join = SubElement(encode, "block", s="reportJoinWords")
SubElement(join, "block", var="arg-{}".format(index))
if block.shape == "command":
script_xml = """
<script>
<block s="{cmd}">
<block s="reifyReporter">
<autolambda>
{http_block_xml}
</autolambda>
</block>
</block>
</script>
""".format(
cmd="doRun" if block.is_blocking else "fork",
http_block_xml="{http_block_xml}",
)
elif block.shape == "predicate":
script_xml = """
<script>
<block s="doDeclareVariables">
<list>
<l>result</l>
</list>
</block>
<block s="doSetVar">
<l>result</l>
{http_block_xml}
</block>
<block s="doIf">
<block s="reportEquals">
<block var="result"/>
<l>true</l>
</block>
<script>
<block s="doSetVar">
<l>result</l>
<block s="reportTrue"/>
</block>
</script>
#.........这里部分代码省略.........
示例2: generate_xml
# 需要导入模块: from xml.etree.ElementTree import SubElement [as 别名]
# 或者: from xml.etree.ElementTree.SubElement import attrib["s"] [as 别名]
def generate_xml(is_browser=False):
root = Element("blocks", {
"app": "Snap! 4.0, http://snap.berkeley.edu",
"version": "1",
})
for name, block in Blockext.blocks.items():
if block.is_hidden: continue
defn = SubElement(root, "block-definition", {
"type": block.shape,
"category": "other",
})
if block.help_text:
comment = SubElement(defn, "comment", w="360", collapsed="false")
comment.text = block.help_text
SubElement(defn, "header")
SubElement(defn, "code")
inputs = SubElement(defn, "inputs")
input_names = inspect.getargspec(block.func).args
defaults = list(block.defaults)
selector = ""
for part in Block.INPUT_RE.split(block.text):
if part.startswith("%") and part != "%%":
shape = part[1]
input_ = SubElement(inputs, "input", {
"type": "%{shape}".format(shape=INPUT_SELECTORS[shape]),
"readonly": "true" if shape == "m" else "",
})
default = (defaults.pop(0) if defaults else "") or ""
input_.text = unicode(default)
if shape in "md":
options = SubElement(input_, "options")
menu_name = part[3:]
options.text = "\n".join(Blockext.menus[menu_name])
# TODO menus
input_name = input_names.pop(0) if input_names else ""
part = "%'{name}'".format(name=input_name)
selector += part
defn.attrib["s"] = selector
http_block = Element("block", s="reportURL")
join_block = SubElement(http_block, "block", s="reportJoinWords")
list_ = SubElement(join_block, "list")
url = "localhost:{port}/{name}".format(port=Blockext.port, name=name)
if block.is_blocking:
url += "/-" # Blank request id
SubElement(list_, "l").text = url
input_names = inspect.getargspec(block.func).args
for name in input_names:
SubElement(list_, "l").text = "/"
encode = SubElement(list_, "block", s="reportTextFunction")
l = SubElement(encode, "l")
SubElement(l, "option").text = "encode URI component"
join = SubElement(encode, "block", s="reportJoinWords")
SubElement(join, "block", var=name)
if block.shape == "command":
script_xml = """
<script>
<block s="{selector}">
<block s="reifyReporter">
<autolambda>
{http_block_xml}
</autolambda>
</block>
</block>
</script>
""".format(
selector="doRun" if block.is_blocking else "fork",
http_block_xml="{http_block_xml}",
)
elif block.shape == "predicate":
script_xml = """
<script>
<block s="doDeclareVariables">
<list>
<l>result</l>
</list>
</block>
<block s="doSetVar">
<l>result</l>
{http_block_xml}
</block>
<block s="doIf">
<block s="reportEquals">
<block var="result"/>
<l>true</l>
</block>
<script>
<block s="doSetVar">
<l>result</l>
<block s="reportTrue"/>
</block>
</script>
</block>
#.........这里部分代码省略.........