using System.Collections.Generic;
public delegate List<string> TextFormatter(List<string> s);
public class TextDocument
public List<string> TextLines { get; set; }
public char LineSeparator { get; set; }
public TextFormatter Formatter { get; set; }
TextLines = new List<string>();
this.TextLines = Formatter(TextLines);
public override string ToString()
StringBuilder s = new StringBuilder();
List<string> a = this.TextLines;
s.Append(c + this.LineSeparator);
public override bool Equals(Object o)
TextDocument textDocument = new TextDocument();
textDocument = (TextDocument)o;
List<string> a = this.TextLines;
List<string> b = textDocument.TextLines;
if (a.SequenceEqual(b) && textDocument.LineSeparator == this.LineSeparator && this.Formatter.Equals(textDocument.Formatter))
this.TextLines = this.Formatter(this.TextLines);
string filename = string.Empty;
File.WriteAllText(Path.Combine(filename,"SaveDocument.txt"),this.ToString());
public void LoadFromDisk()
string Load = string.Empty;
TextDocument t = JsonConvert.DeserializeObject<TextDocument>(Path.Combine(Load,"LoadDocument.txt"));
this.TextLines = t.TextLines;
this.LineSeparator = t.LineSeparator;
public List<string> String()
return this.TextLines.Where(x => x.Length > 100 && x.Where(c => c == ' ').Count() > 10).ToList();
public override int GetHashCode() {
return base.GetHashCode();
static void Main(string[] args)
TextDocument t = new TextDocument();
t.Formatter = new TextFormatter((List<String> text) =>
List<String> formatted = new List<string>();
foreach (var line in text)
formatted.Add(line.ToUpper());
t.TextLines.Add("maria");
t.TextLines.Add("maria1");
t.TextLines.Add("maria2");
TextDocument t1 = new TextDocument();
t1.Formatter = new TextFormatter((List<String> text) =>
List<String> formatted = new List<string>();
for (int i = 0; i < text.Count; i++)
formatted.Add(i + 1 + "." + text[i].ToUpper());
t1.TextLines.Add("maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria maria mihai maria ");
t1.TextLines.Add("maria1");
t1.TextLines.Add("maria2");
List<string> a = t1.String();
Console.WriteLine(t.Equals(t1) +"\n"+ t1.ToString() + "\n" + t.ToString());