コード例 #1
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);
            }