Пример #1
0
        bool WriteAnnotation(int idx, YNode n)
        {
            string s = GetAnnotation(idx, n);

            if (s != null)
            {
                Write(n.Depth, "  # {0}", s);
                return(true);
            }
            return(false);
        }
Пример #2
0
 public new List<YNode> Walk(object key,object o) {
     var nodes=new List<YNode>();
     foreach(Node i in base.Walk(key,o)) {
         int dupidx=i.Dupidx;
         var ynode=new YNode(Depth,i.Key,i.O,dupidx,
                             IsMap(i)?YNode.Flag.Dic:YNode.Flag.None);
         if(dupidx!=-1) nodes[dupidx].Flags|=YNode.Flag.ReferredTo;
         if(i.Leaf) ynode.Flags|=YNode.Flag.Leaf;
         nodes.Add(ynode);
     }
     return nodes;
 }
Пример #3
0
            // returns false if not a leaf or strlen(n.O)>maxlen
            public bool WriteLeaf(YNode n, int maxlen)
            {
                var o = n.O;

                if (o == null)
                {
                    YAMLWriter.Write(n.Depth, "~");
                    return(true);
                }
                else if (n.IsLeaf)
                {
                    var s = n.O.ToString();
                    if (s.Length > maxlen)
                    {
                        return(false);
                    }
                    if (n.O is string || n.O is char)
                    {
                        if (LineBreakp(s))
                        {
                            var matches = LineBreaker.Matches(s);
                            YAMLWriter.WriteLine(n.Depth, "|2");
                            var olddepth = YAMLWriter.Depth;
                            YAMLWriter.Depth += "  ";
                            foreach (Match i in matches)
                            {
                                YAMLWriter.Lw.Column = 0;
                                YAMLWriter.Write(n.Depth, i.Groups[0].Value);
                            }
                            YAMLWriter.Depth = olddepth;
                        }
                        else
                        {
                            YAMLWriter.Write(n.Depth, Escape(s));
                        }
                    }
                    else
                    {
                        YAMLWriter.Write(n.Depth, s);
                    }
                    return(true);
                }
                return(false);
            }
Пример #4
0
        public new List <YNode> Walk(object key, object o)
        {
            var nodes = new List <YNode>();

            foreach (Node i in base.Walk(key, o))
            {
                int dupidx = i.Dupidx;
                var ynode  = new YNode(Depth, i.Key, i.O, dupidx,
                                       IsMap(i)?YNode.Flag.Dic:YNode.Flag.None);
                if (dupidx != -1)
                {
                    nodes[dupidx].Flags |= YNode.Flag.ReferredTo;
                }
                if (i.Leaf)
                {
                    ynode.Flags |= YNode.Flag.Leaf;
                }
                nodes.Add(ynode);
            }
            return(nodes);
        }
Пример #5
0
 // returns false if not a leaf
 public bool WriteLeaf(YNode n)
 {
     return(WriteLeaf(n, int.MaxValue));
 }
Пример #6
0
 bool WriteAnnotation(int idx,YNode n) {
     string s=GetAnnotation(idx,n);
     if(s!=null) {
         Write(n.Depth,"  # {0}",s);
         return true;
     }
     return false;
 }
Пример #7
0
 string GetAnnotation(int idx,YNode n) {
     if(Annotate==null) return null;
     return Annotate(idx,n);
 }
Пример #8
0
 // returns false if not a leaf or strlen(n.O)>maxlen
 public bool WriteLeaf(YNode n,int maxlen) {
     var o=n.O;
     if(o==null) {
         YAMLWriter.Write(n.Depth,"~");
         return true;
     } else if(n.IsLeaf) {
         var s=n.O.ToString();
         if(s.Length>maxlen) return false;
         if(n.O is string || n.O is char) {
             if(LineBreakp(s)) {
                 var matches=LineBreaker.Matches(s);
                 YAMLWriter.WriteLine(n.Depth,"|2");
                 var olddepth=YAMLWriter.Depth;
                 YAMLWriter.Depth+="  ";
                 foreach(Match i in matches) {
                     YAMLWriter.Lw.Column=0;
                     YAMLWriter.Write(n.Depth,i.Groups[0].Value);
                 }
                 YAMLWriter.Depth=olddepth;
             } else {
                 YAMLWriter.Write(n.Depth,Escape(s));
             }
         } else {
             YAMLWriter.Write(n.Depth,s);
         }
         return true;
     }
     return false;
 }
Пример #9
0
 // returns false if not a leaf
 public bool WriteLeaf(YNode n) {
     return WriteLeaf(n,int.MaxValue);
 }