Beispiel #1
0
    def deserialize(self, elem):
        """Load from an xml element tree"""
        assert (elem.tag == "list")
        self.id = elem.get("id")

        "Does this list use <item> tags?"
        if elem.find("item"):
            self.broken_into_items = True
            self.list = [factory.deserialize_value(item[0]) for item in elem]
        else:
            self.broken_into_items = False
            self.list = [factory.deserialize_value(item) for item in elem]
Beispiel #2
0
    def deserialize(self, elem):
        """Load from an xml element tree"""
        assert (elem.tag == "list")
        self.id = elem.get("id")

        "Does this list use <item> tags?"
        if elem.find("item"):
            self.broken_into_items = True
            self.list = [factory.deserialize_value(item[0])
                         for item in elem]
        else:
            self.broken_into_items = False
            self.list = [factory.deserialize_value(item)
                         for item in elem]
Beispiel #3
0
    def deserialize(self, elem):
        """Load from an xml element tree"""

        # What kind of block are we?
        self.type = BlockType.block_type_from_name(elem.tag)
        assert (self.type != BlockType.unknown)

        # Get the function name and look up the function
        self.function_name = elem.get("s")
        if self.function_name is None:
            # there is no function name; this must be a var block
            self.var_name = elem.get("var")
            self.function_name = "var"
        if self.type == BlockType.regular:
            self.function = ops.bind_to_function(self.function_name)
        else:
            # Custom functions are defined after they are used in the XML
            self.function = None

        # Each block needs a unique ID; create one if it doesn't have one
        identifier = elem.get("uuid")
        if identifier:
            self.uuid = uuid.UUID(identifier)  # convert from str to object
            self.deserialized_uuid = True
        else:
            self.uuid = uuid.uuid1()  # generate new UUID
            self.deserialized_uuid = False

        self.arguments = [factory.deserialize_value(child)
                          for child in elem]
Beispiel #4
0
    def deserialize(self, elem):
        """Load from an xml element tree"""

        # What kind of block are we?
        self.type = BlockType.block_type_from_name(elem.tag)
        assert (self.type != BlockType.unknown)

        # Get the function name and look up the function
        self.function_name = elem.get("s")
        if self.function_name is None:
            # there is no function name; this must be a var block
            self.var_name = elem.get("var")
            self.function_name = "var"
        if self.type == BlockType.regular:
            self.function = ops.bind_to_function(self.function_name)
        else:
            # Custom functions are defined after they are used in the XML
            self.function = None

        # Each block needs a unique ID; create one if it doesn't have one
        identifier = elem.get("uuid")
        if identifier:
            self.uuid = uuid.UUID(identifier)  # convert from str to object
            self.deserialized_uuid = True
        else:
            self.uuid = uuid.uuid1()  # generate new UUID
            self.deserialized_uuid = False

        self.arguments = [factory.deserialize_value(child) for child in elem]
Beispiel #5
0
    def deserialize(self, elem):
        """Load from an xml element tree"""
        assert (elem.tag == "variable")
        self.name = elem.get("name")

        # We should have one child
        self.contents = None
        if len(elem) > 0:
            self.contents = factory.deserialize_value(elem[0])
            assert (self.contents is not None)
Beispiel #6
0
    def deserialize(self, elem):
        """Load from an xml element tree"""
        assert (elem.tag == "variable")
        self.name = elem.get("name")

        # We should have one child
        self.contents = None
        if len(elem) > 0:
            self.contents = factory.deserialize_value(elem[0])
            assert (self.contents is not None)
Beispiel #7
0
 def deserialize(self, elem):
     """Load from an xml element tree"""
     assert (elem.tag == "blocks")
     for child in elem:
         self.definitions.append(factory.deserialize_value(child))
Beispiel #8
0
 def deserialize(self, elem):
     """Load from an xml element tree"""
     assert (elem.tag == "blocks")
     for child in elem:
         self.definitions.append(factory.deserialize_value(child))
Beispiel #9
0
def get_blocks(elem):
    """Returns the list of block definitions, if it is defined."""
    blocks_node = elem.find("blocks")
    if blocks_node is not None:
        return factory.deserialize_value(blocks_node)
    return None
 def do_test_using_factory(self, xml, filename, **kwargs):
     obj = factory.deserialize_value(ElementTree.XML(xml))
     new_xml = ElementTree.tostring(obj.serialize(**kwargs))
     self.compare_xml(xml, new_xml, True, filename)
Beispiel #11
0
 def do_test_using_factory(self, xml, filename, **kwargs):
     obj = factory.deserialize_value(ElementTree.XML(xml))
     new_xml = ElementTree.tostring(obj.serialize(**kwargs))
     self.compare_xml(xml, new_xml, True, filename)