behavior_sequence_parser.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 
6 
7 import xml.sax
8 
9 import converter.xar_types as xar_types
10 
11 import converter.node.behavior_sequence as node_behavior_sequence
12 import converter.node.behavior_layer as node_behavior_layer
13 import converter.node.behavior_keyframe_v2 as node_behavior_keyframe_v2
14 
15 
17  """ Generates the representation of the file designed by filename
18  in memory. Build a tree.
19 
20  :param filename: name of the file to parse
21  :returns: the tree representing the file
22  """
23  parser = xml.sax.make_parser()
24  handler = BehaviorSequenceHandler()
25  parser.setContentHandler(handler)
26  parser.parse(open(filename))
27 
28  root_node = handler.get_root()
29  if root_node.format_version != "4":
30  return None
31 
32  return root_node
33 
34 
35 class BehaviorSequenceHandler(xml.sax.handler.ContentHandler):
36  """ ContentHandler to parse the xar file
37  """
38 
39  def __init__(self):
40  xml.sax.handler.ContentHandler.__init__(self)
41  self._nodes = []
42  self._root = None
43 
44  def startElement(self, name, attrs):
45  new_node = None
46  if name == 'BehaviorSequence':
47  new_node = node_behavior_sequence.BehaviorSequence(
48  xar_types.attributes(attrs))
49  elif name == 'BehaviorLayer':
50  new_node = node_behavior_layer.BehaviorLayer(
51  xar_types.attributes(attrs))
52  elif name == 'BehaviorKeyframe':
53  new_node = node_behavior_keyframe_v2.BehaviorKeyframeV2(
54  xar_types.attributes(attrs))
55 
56  if not self._root:
57  self._root = new_node
58  # Attach to parent here
59  if self._nodes:
60  parent_node = self._nodes.pop()
61  parent_node.attach_attribute(name, new_node)
62  parent_node.add_child(new_node)
63  self._nodes.append(parent_node)
64 
65  self._nodes.append(new_node)
66 
67  def endElement(self, name):
68  if (name == 'BehaviorSequence'
69  or name == 'BehaviorLayer'
70  or name == 'BehaviorKeyframe'):
71  self._nodes.pop()
72 
73  def get_root(self):
74  return self._root
converter.node.behavior_keyframe_v2
Definition: behavior_keyframe_v2.py:1
converter.xar_types
Definition: xar_types.py:1
converter.behavior_sequence_parser.generate_tree_from_filename
def generate_tree_from_filename(filename)
Definition: behavior_sequence_parser.py:16
converter.behavior_sequence_parser.BehaviorSequenceHandler.get_root
def get_root(self)
Definition: behavior_sequence_parser.py:73
converter.behavior_sequence_parser.BehaviorSequenceHandler
Definition: behavior_sequence_parser.py:35
converter.node.behavior_layer
Definition: behavior_layer.py:1
converter.behavior_sequence_parser.BehaviorSequenceHandler._root
_root
Definition: behavior_sequence_parser.py:42
converter.xar_types.attributes
Copyright (c) 2012 Aldebaran Robotics.
Definition: xar_types.py:12
converter.behavior_sequence_parser.BehaviorSequenceHandler.startElement
def startElement(self, name, attrs)
Definition: behavior_sequence_parser.py:44
converter.behavior_sequence_parser.BehaviorSequenceHandler.__init__
def __init__(self)
Definition: behavior_sequence_parser.py:39
converter.behavior_sequence_parser.BehaviorSequenceHandler._nodes
_nodes
Definition: behavior_sequence_parser.py:41
converter.node.behavior_sequence
Definition: behavior_sequence.py:1
converter.behavior_sequence_parser.BehaviorSequenceHandler.endElement
def endElement(self, name)
Definition: behavior_sequence_parser.py:67


naoqi_libqicore
Author(s): Aldebaran
autogenerated on Wed Sep 14 2022 02:22:41