/// <summary> /// Create one token if one textTokenList matches. /// </summary> /// <param name="owner">Owner of new token to create.</param> /// <param name="reference">Character to start match.</param> /// <param name="createToken">Call back method to create one token.</param> /// <param name="textTokenList">One of these tokens has to match.</param> public static void CreateToken(FileText owner, Storage.Character reference, Action <FileText, string, Storage.Character, Storage.Character> createToken, params string[] textTokenList) { foreach (var textToken in textTokenList) { if (reference.Owner.Text.Length > reference.TextIndex + textToken.Length - 1) { if (reference.Owner.Text.Substring(reference.TextIndex, textToken.Length) == textToken) { var referenceEnd = (Storage.Character)reference.Owner.List[reference.TextIndex + textToken.Length - 1]; // Create before int length = owner.List.Count; // Create createToken(owner, textToken, reference, referenceEnd); // Create after int lengthNew = owner.List.Count; // Create validate UtilFramework.Assert(lengthNew - length == 1); // Created one token UtilFramework.Assert(owner.Last is Token); // Create of type token break; } } } }
public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result) { if (reference.Text == '*') { new Bullet(owner, reference); } }
public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result) { if (owner.Last is Content content) { content.Remove(); new Content((FileText)owner, content.ReferenceBegin, reference); } else { new Content((FileText)owner, reference, reference); } }
public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result) { var character = reference; if (character.Text == ' ') { if (owner.Last is Space space) { space.Remove(); new Space(owner, space.ReferenceBegin, reference); } else { new Space(owner, reference, reference); } } }
public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result) { CreateToken(owner, reference, (owner, textToken, referenceBegin, referenceEnd) => new NewLine(owner, referenceBegin, referenceEnd), "\r\n", "\r", "\n"); }
public NewLine(FileText owner, Storage.Character referenceBegin, Storage.Character referenceEnd) : base(owner, referenceBegin, referenceEnd) { }
public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result) { CreateToken(owner, reference, (owner, textToken, referenceBegin, referenceEnd) => new Comment(owner, referenceBegin, referenceEnd, textToken == "-->"), "<!--", "-->"); }
public Comment(FileText owner, Storage.Character referenceBegin, Storage.Character referenceEnd, bool isEnd) : base(owner, referenceBegin, referenceEnd) { IsEnd = isEnd; }
public Content(FileText owner, Storage.Character referenceBegin, Storage.Character referenceEnd) : base(owner, referenceBegin, referenceEnd) { }
public Bullet(FileText owner, Storage.Character reference) : base(owner, reference) { }
public Header(FileText owner, Storage.Character reference) : base(owner, reference) { }
public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result) { CreateToken(owner, reference, (owner, textToken, referenceBegin, referenceEnd) => new Special(owner, referenceBegin, referenceEnd), "(", ")", "[", "]"); }
public Special(FileText owner, Storage.Character referenceBegin, Storage.Character referenceEnd) : base(owner, referenceBegin, referenceEnd) { }
public virtual void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result) { }
/// <summary> /// Constructor for token component with reference. /// </summary> public Token(FileText owner, Storage.Character reference) : base(owner, reference) { }