当前位置: 首页>>代码示例>>Python>>正文


Python SubElement.attrib["s"]方法代码示例

本文整理汇总了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>
#.........这里部分代码省略.........
开发者ID:mtr0jGH,项目名称:blockext,代码行数:103,代码来源:generate.py

示例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>
#.........这里部分代码省略.........
开发者ID:ilmanzo,项目名称:scratch_extensions,代码行数:103,代码来源:snap.py


注:本文中的xml.etree.ElementTree.SubElement.attrib["s"]方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。