Ejemplo n.º 1
0
            public void Render(StreamWriter writer, int level = -1)
            {
                string leadingWhitespace  = "";
                string leadingWhitespacer = (Parent != null ? "  " : "");

                for (var i = 0; i < level; i++)
                {
                    leadingWhitespacer += "  ";
                    leadingWhitespace  += "  ";
                }

                if (Parent != null)
                {
                    writer.WriteLine(leadingWhitespace + "#class add " + this.Name);
                }

                foreach (string key in this.Children.Keys.OrderBy(x => x))
                {
                    this.Children[key].Render(writer, level + 1);
                }

                foreach (RantDictionaryEntry entry in Entries.OrderBy(x => x.Terms[0].Value))
                {
                    if (entry.Terms.Length > 1)
                    {
                        writer.WriteLine(leadingWhitespacer + ">> {0}", entry.Terms.Select((t, i) => i == 0 ? t.Value : Diff.Derive(entry.Terms[0].Value, t.Value)).Aggregate((c, n) => c + "/" + n));
                    }
                    else
                    {
                        writer.WriteLine(leadingWhitespacer + "> {0}", entry.Terms.Select(t => t.Value).Aggregate((c, n) => c + "/" + n));
                    }

                    if (!Util.IsNullOrWhiteSpace(entry.Terms[0].Pronunciation))
                    {
                        writer.WriteLine(leadingWhitespacer + "  | pron {0}", entry.Terms.Select(t => t.Pronunciation).Aggregate((c, n) => c + "/" + n));
                    }

                    string[] uniqueClasses = GetClassesForExport(entry).Where(x => !Classes.Contains(x)).OrderBy(x => x).ToArray();
                    if (uniqueClasses.Length > 0)
                    {
                        writer.WriteLine(leadingWhitespacer + "  | class {0}", uniqueClasses.Aggregate((c, n) => c + " " + n));
                    }

                    if (entry.Weight != 1)
                    {
                        writer.WriteLine(leadingWhitespacer + "  | weight {0}", entry.Weight);
                    }
                }

                if (Parent != null)
                {
                    writer.WriteLine(leadingWhitespace + "#class remove " + this.Name + "\n");
                }
            }