Ejemplo n.º 1
0
        public void WriteNode(Node node) {
            if (node == null) return;
            inlineStack.Push(isInline);
            isInline = (node.Nodes == null) &&
                       (node.Properties == null || node.Properties.Count < 6) &&
                       !node.DoNotInline;

            for (int i = 0; i < indent; i++) {
                writer.Write("    ");
            }
            indent++;

            writer.Write("BEGIN ");
            WriteValue(node.Label);
            if (isInline) {
                writer.Write("  ");
            } else {
                writer.Write("\n");
            }

            WriteNodeData(node);

            indent--;
            if (!isInline) {
                for (int i = 0; i < indent; i++) {
                    writer.Write("    ");
                }
            }
            writer.Write("END\n");

            isInline = inlineStack.Pop();
        }
Ejemplo n.º 2
0
 public override void FinishedReadingNode(Node node) {
     var obj = (ObjectBase)node;
     if ("Prisoner".Equals(obj.Type)) {
         var prisoner = new Prisoner(obj);
         Prisoners.Add(prisoner.Id, prisoner);
     } else {
         OtherObjects.Add(obj.Id, obj);
     }
 }
Ejemplo n.º 3
0
 public override Node CreateNode(string label) {
     if (Parser.IsId(label)) {
         int prisonerId = Parser.ParseId(label);
         var item = new Node(label);
         Prisoners.Add(prisonerId, item);
         return item;
     } else {
         return base.CreateNode(label);
     }
 }
Ejemplo n.º 4
0
 public override Node CreateNode(string label) {
     if (Parser.IsId(label)) {
         var report = new Node(label);
         int prisonerId = Parser.ParseId(label);
         Reports.Add(prisonerId, report);
         return report;
     } else {
         return base.CreateNode(label);
     }
 }
Ejemplo n.º 5
0
 public override void FinishedReadingNode(Node node) {
     var penaltyNode = node as Penalty;
     if (penaltyNode != null) {
         List<Penalty> list;
         if (!PenaltyList.TryGetValue(penaltyNode.ObjectId, out list)) {
             list = new List<Penalty>();
             PenaltyList.Add(penaltyNode.ObjectId, list);
         }
         list.Add(penaltyNode);
     }
 }
Ejemplo n.º 6
0
 public void PushNode(string key, Node value) {
     if (Nodes == null) {
         Nodes = new Dictionary<string, List<Node>>();
     }
     List<Node> list;
     if (!Nodes.TryGetValue(key, out list)) {
         list = new List<Node>();
         Nodes.Add(key, list);
     }
     list.Add(value);
 }
Ejemplo n.º 7
0
 public override void FinishedReadingNode(Node node) {
     var studentNode = node as ReformStudent;
     if (studentNode != null) {
         Students.Add(studentNode.Id, studentNode);
     }
 }
Ejemplo n.º 8
0
 void WriteNodeData(Node node) {
     node.WriteProperties(this);
     if (node.Properties != null) {
         foreach (var property in node.Properties) {
             foreach (string value in property.Value) {
                 WriteProperty(property.Key, value);
             }
         }
     }
     node.WriteNodes(this);
     if (node.Nodes != null) {
         foreach (var nodeSet in node.Nodes) {
             foreach (Node value in nodeSet.Value) {
                 WriteNode(value);
             }
         }
     }
 }
Ejemplo n.º 9
0
 public void CopyNodes(Node other) {
     foreach (var property in other.ListNodes()) {
         PushNode(property.Label, property);
     }
 }
Ejemplo n.º 10
0
 public void ReparseProperties(Node other) {
     foreach (var property in other.ListProperties()) {
         ReadKey(property.Key, property.Value);
     }
 }
Ejemplo n.º 11
0
 public virtual void FinishedReadingNode(Node node) {}
Ejemplo n.º 12
0
 public virtual Node CreateNode(string label) {
     var newNode = new Node(label);
     PushNode(label, newNode);
     return newNode;
 }