Source code for citelang.main.graph.cypher

__author__ = "Vanessa Sochat"
__copyright__ = "Copyright 2022, Vanessa Sochat"
__license__ = "MPL 2.0"


import sys

from citelang.logger import logger

from .base import GraphBase


[docs]class Cypher(GraphBase):
[docs] def generate(self): if self.outfile == sys.stdout: fd = sys.stdout else: logger.info("Output will be written to %s" % self.outfile) fd = open(self.outfile, "w") fd.write("CREATE ") # Create graph with nodes next_nodes = [self.data] while next_nodes: next_node = next_nodes.pop(0) label = self.uids[next_node.name] name = "%s (%s)" % (next_node.name, round(next_node.credit, 3)) fd.write("(%s:PACKAGE {name: '%s', label: '%s'}),\n" % (label, name, label)) for child in next_node.children: next_nodes.append(child) # Now create links next_nodes = [self.data] text = "" while next_nodes: next_node = next_nodes.pop(0) label = self.uids[next_node.name] name = "%s (%s)" % (next_node.name, round(next_node.credit, 3)) for i, child in enumerate(next_node.children): label_to = self.uids[child.name] text += "(%s)-[:DEPENDSON]->(%s),\n" % (label, label_to) next_nodes.append(child) text = text.strip(",\n") fd.write(text + ";\n") if self.outfile != sys.stdout: fd.close()