public List getEdgeStrings()

in src/main/java/com/twitter/nodes/NodeDotGraphGenerator.java [126:156]


    public List<String> getEdgeStrings() {
      List<String> edges = Lists.newArrayList();
      Set<Pair<String, String>> seenPairs = Sets.newHashSet();
      for (Map.Entry<String, Pair<NodeInfo, EdgeInfo>> entry : depInfo.entrySet()) {
        NodeInfo dep = entry.getValue().getFirst();
        EdgeInfo edge = entry.getValue().getSecond();
        if (dep.keyName.equals(this.keyName)) {
          continue;  // don't add edge to itself
        }
        Pair<String, String> pair = Pair.of(dep.keyName, this.keyName);
        if (!seenPairs.contains(pair)) {
          edges.add(String.format("%s -> %s [style=%s label=\"%s\" color=\"%s\"];",
              dep.keyName, this.keyName,
              edge.optional ? "dashed" : "solid",
              edge.label.startsWith("DEP") ? "" : edge.label,
              "condition".equals(edge.label) ? "grey" : "black"));
          seenPairs.add(pair);
        }
      }

      // Beautify predicate edges, align true and false node.
      // TODO(wangtian): Temporarily commented out for now as it sometimes mess up the display,
      // find a better way to do this.
      // if (this.type == NodeType.PREDICATE) {
      //   Iterator<Pair<NodeInfo, EdgeInfo>> iter = depInfo.values().iterator();
      //   String name1 = iter.next().getFirst().keyName;
      //   String name2 = iter.next().getFirst().keyName;
      //   edges.add(String.format("{ rank = same; %s %s }", name1, name2));
      // }
      return edges;
    }