Source code for pdpy_lib.memory.graph

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# **************************************************************************** #
# This file is part of the pdpy project: https://github.com/pdpy-org
# Copyright (C) 2021 Fede Camara Halac
# **************************************************************************** #
""" Class Definitions for the Old Graph Obj """

from ..core.base import Base
from ..primitives.area import Area # for the Graph class

__all__ = [ 'Graph' ]

[docs]class Graph(Base): """ The ye-olde array """ def __init__(self, pd_lines=None, json=None, xml=None): self.__pdpy__ = self.__class__.__name__ super().__init__(cls='graph') if pd_lines is not None: self.id = pd_lines[0] self.name = pd_lines[1] self.area = Area(pd_lines[2:6]) self.range = Area(pd_lines[6:10]) elif json is not None: super().__populate__(self, json) elif xml is not None: self.id = xml.findtext('id') self.name = xml.findtext('name') self.area = Area(xml=xml.find('area')) self.range = Area(xml=xml.find('range'))
[docs] def addArray(self, *args): """ Append an array structure with symbols for name and template """ if not hasattr(self, 'array'): self.array = [] self.array.append({ 'name' : args[1], 'length' : self.__num__(args[2]), 'type' : args[3] })
def __pd__(self): """ Returns the graph instruction for the pd file """ s = self.name s += ' ' + self.range.__pd__(order=1) s += ' ' + self.area.__pd__(order=1) s = super().__pd__(s) for x in getattr(self, 'array', []): s += "#X array" + " " + str(x['name']) + " " + str(x['length']) + " " + str(x['type']) s += self.__end__ s += '#X pop' + self.__end__ return s def __xml__(self): """ Return the XML Element for this object """ x = super().__xml__(scope=self, attrib=('name','area','range')) for a in getattr(self, 'array', []): arr = super().__element__(scope=a) for y in ('name', 'length', 'type'): super().__subelement__(arr, y, text=a[y]) super().__subelement__(x, arr) return x