Example #1
0
        public void Serialize(SchemaFile file, TargetWriter target)
        {
            using (target)
            {
                var writer = target.GetWriter();
                var items  = file.GetItems();

                Func <int, bool> indentFunction = index => false;

                for (var i = 0; i < items.Length; i++)
                {
                    var item = items[i];

                    var indent = indentFunction.Invoke(i);
                    if (indent)
                    {
                        writer.Write("  ");
                    }

                    if (item.IsComment)
                    {
                        writer.Write("#");
                        writer.WriteLine(item.Text);
                    }
                    else if (item.IsValue)
                    {
                        writer.WriteLine((item.Text == null) ? "(null)" : item.Text);
                    }
                    else
                    {
                        writer.WriteLine(item.Text);
                    }

                    if (item.IsProperty)
                    {
                        var values    = file.GetValues(item.Text);
                        var lastItem  = values.LastOrDefault() ?? item;
                        var lastIndex = file.IndexOf(lastItem);

                        indentFunction = index => index <= lastIndex;
                    }
                }

                writer.Flush();
            }
        }
Example #2
0
        public IEnumerable <string> GetValues(string key)
        {
            var values = file.GetValues(key);

            return(values.Select(v => v.Text));
        }