public void TextNavigator_GetRemainingText_1()
        {
            const string  text      = "ABC";
            TextNavigator navigator = new TextNavigator(text);

            Assert.AreEqual(text, navigator.GetRemainingText());
            navigator.ReadChar();
            Assert.AreEqual("BC", navigator.GetRemainingText());
            navigator.ReadChar();
            Assert.AreEqual("C", navigator.GetRemainingText());
            navigator.ReadChar();
            Assert.IsNull(navigator.GetRemainingText());
        }
        public void TextNavigator_ReadUntil_3()
        {
            TextNavigator navigator = new TextNavigator("12345<.>");
            string        actual    = navigator.ReadUntil("<.>");

            Assert.AreEqual("12345", actual);
            Assert.AreEqual("<.>", navigator.PeekString(3));
            Assert.AreEqual("<.>", navigator.GetRemainingText());

            navigator = new TextNavigator("12345");
            actual    = navigator.ReadUntil("<.>");
            Assert.IsNull(actual);

            navigator = new TextNavigator("12345<");
            actual    = navigator.ReadUntil("<.>");
            Assert.IsNull(actual);

            navigator = new TextNavigator("12345<.");
            actual    = navigator.ReadUntil("<.>");
            Assert.IsNull(actual);

            navigator = new TextNavigator("12345<.6>");
            actual    = navigator.ReadUntil("<.>");
            Assert.IsNull(actual);

            navigator = new TextNavigator("12345<.>67890");
            actual    = navigator.ReadUntil("<.>");
            Assert.AreEqual("12345", actual);
            Assert.AreEqual("<.>", navigator.PeekString(3));
            Assert.AreEqual("<.>67890", navigator.GetRemainingText());

            navigator = new TextNavigator(string.Empty);
            Assert.IsNull(navigator.ReadUntil("<.>"));
        }
        public void TextNavigator_ReadTo_3()
        {
            TextNavigator navigator = new TextNavigator("314abc>>>hello");
            string        actual    = navigator.ReadTo(">>>");

            Assert.AreEqual("314abc", actual);
            Assert.AreEqual("hello", navigator.GetRemainingText());

            navigator = new TextNavigator("314abc>>hello");
            actual    = navigator.ReadTo(">>>");
            Assert.IsNull(actual);
            Assert.AreEqual("314abc>>hello", navigator.GetRemainingText());

            navigator = new TextNavigator(string.Empty);
            Assert.IsNull(navigator.ReadTo(">>>"));
        }
Example #4
0
        public static FileSpecification Parse
        (
            string text
        )
        {
            // Sure.NotNullNorEmpty(text, nameof(text));

            var navigator = new TextNavigator(text);
            var path      = int.Parse
                            (
                navigator.ReadTo(".").ToString()
                            );
            var database   = navigator.ReadTo(".").ToString().EmptyToNull();
            var fileName   = navigator.GetRemainingText().ToString();
            var binaryFile = fileName.StartsWith("@");

            if (binaryFile)
            {
                fileName = fileName.Substring(1);
            }

            string?content  = null;
            var    position = fileName.IndexOf("&", StringComparison.InvariantCulture);

            if (position >= 0)
            {
                content  = fileName.Substring(position + 1);
                fileName = fileName.Substring(0, position);
            }
            var result = new FileSpecification
            {
                BinaryFile = binaryFile,
                Path       = (IrbisPath)path,
                Database   = database,
                FileName   = fileName,
                Content    = content
            };


            return(result);
        }
Example #5
0
        public static MenuSpecification Parse
        (
            [CanBeNull] string text
        )
        {
            MenuSpecification result = new MenuSpecification
            {
                Path = IrbisPath.MasterFile
            };

            if (!ReferenceEquals(text, null) && text.Length != 0)
            {
                TextNavigator navigator = new TextNavigator(text);
                result.FileName = navigator.ReadUntil('\\');
                if (navigator.PeekChar() == '\\')
                {
                    navigator.ReadChar();
                }
                if (!navigator.IsEOF)
                {
                    string db = navigator.ReadUntil('\\');
                    if (navigator.PeekChar() == '\\')
                    {
                        navigator.ReadChar();
                    }

                    result.Database = db;

                    if (!navigator.IsEOF)
                    {
                        string sortText = navigator.GetRemainingText();
                        NumericUtility.TryParseInt32(sortText, out int sortMode);
                        result.SortMode = sortMode;
                    }
                }
            }

            return(result);
        }
        public static FileSpecification Parse
        (
            [NotNull] string text
        )
        {
            Sure.NotNullNorEmpty(text, "text");

            TextNavigator navigator  = new TextNavigator(text);
            int           path       = NumericUtility.ParseInt32(navigator.ReadTo("."));
            string        database   = navigator.ReadTo(".").EmptyToNull();
            string        fileName   = navigator.GetRemainingText();
            bool          binaryFile = fileName.StartsWith("@");

            if (binaryFile)
            {
                fileName = fileName.Substring(1);
            }

            string content  = null;
            int    position = fileName.IndexOf("&");

            if (position >= 0)
            {
                content  = fileName.Substring(position + 1);
                fileName = fileName.Substring(0, position);
            }
            FileSpecification result = new FileSpecification
            {
                BinaryFile = binaryFile,
                Path       = (IrbisPath)path,
                Database   = database,
                FileName   = fileName,
                Content    = content
            };


            return(result);
        }