Пример #1
0
            /// <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;
                        }
                    }
                }
            }
Пример #2
0
 public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result)
 {
     if (reference.Text == '*')
     {
         new Bullet(owner, reference);
     }
 }
Пример #3
0
 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);
     }
 }
Пример #4
0
            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);
                    }
                }
            }
Пример #5
0
 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");
 }
Пример #6
0
 public NewLine(FileText owner, Storage.Character referenceBegin, Storage.Character referenceEnd)
     : base(owner, referenceBegin, referenceEnd)
 {
 }
Пример #7
0
 public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result)
 {
     CreateToken(owner, reference, (owner, textToken, referenceBegin, referenceEnd) => new Comment(owner, referenceBegin, referenceEnd, textToken == "-->"), "<!--", "-->");
 }
Пример #8
0
 public Comment(FileText owner, Storage.Character referenceBegin, Storage.Character referenceEnd, bool isEnd)
     : base(owner, referenceBegin, referenceEnd)
 {
     IsEnd = isEnd;
 }
Пример #9
0
 public Content(FileText owner, Storage.Character referenceBegin, Storage.Character referenceEnd)
     : base(owner, referenceBegin, referenceEnd)
 {
 }
Пример #10
0
 public Bullet(FileText owner, Storage.Character reference)
     : base(owner, reference)
 {
 }
Пример #11
0
 public Header(FileText owner, Storage.Character reference)
     : base(owner, reference)
 {
 }
Пример #12
0
 public override void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result)
 {
     CreateToken(owner, reference, (owner, textToken, referenceBegin, referenceEnd) => new Special(owner, referenceBegin, referenceEnd), "(", ")", "[", "]");
 }
Пример #13
0
 public Special(FileText owner, Storage.Character referenceBegin, Storage.Character referenceEnd)
     : base(owner, referenceBegin, referenceEnd)
 {
 }
Пример #14
0
 public virtual void CreateSyntax(FileText owner, Storage.Character reference, CreateSyntaxResult result)
 {
 }
Пример #15
0
 /// <summary>
 /// Constructor for token component with reference.
 /// </summary>
 public Token(FileText owner, Storage.Character reference)
     : base(owner, reference)
 {
 }