/// <summary>
        /// Creates and seeds a new part.
        /// </summary>
        /// <param name="item">The item this part should belong to.</param>
        /// <param name="location">The location.</param>
        /// <param name="baseText">The base text.</param>
        /// <returns>A new fragment.</returns>
        /// <exception cref="ArgumentNullException">item or location or
        /// baseText</exception>
        public override ITextLayerFragment GetFragment(
            IItem item, string location, string baseText)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }
            if (location == null)
            {
                throw new ArgumentNullException(nameof(location));
            }
            if (baseText == null)
            {
                throw new ArgumentNullException(nameof(baseText));
            }

            // find 1st letter
            int i = 0;

            while (i < baseText.Length)
            {
                if (char.IsLetter(baseText[i]))
                {
                    break;
                }
                i++;
            }
            if (i == baseText.Length)
            {
                return(null);
            }

            // change it
            string standard = ChangeLetterAt(baseText, i);

            // create operation
            MspOperation op = new MspOperation
            {
                Operator = MspOperator.Replace,
                RangeA   = new TextRange(i, 1),
                ValueA   = new string(baseText[i], 1),
                ValueB   = new string(standard[i], 1),
                Tag      = _options?.Tags?.Length > 0
                    ? SeedHelper.RandomPickOneOf(_options.Tags) : null
            };

            OrthographyLayerFragment fragment = new OrthographyLayerFragment
            {
                Location = location,
                Standard = standard
            };

            fragment.Operations.Add(op.ToString());

            return(fragment);
        }
예제 #2
0
        public void ToString_Delete_Ok(string tag, string note, string expected)
        {
            MspOperation op = new MspOperation
            {
                Operator = MspOperator.Delete,
                RangeA   = TextRange.Parse("2x3"),
                Tag      = tag,
                Note     = note
            };

            Assert.Equal(expected, op.ToString());
        }
예제 #3
0
        public void ToString_Insert_Ok(string tag, string note, string expected)
        {
            MspOperation op = new MspOperation
            {
                Operator = MspOperator.Insert,
                RangeA   = TextRange.Parse("2x0"),
                ValueB   = "new",
                Tag      = tag,
                Note     = note
            };

            Assert.Equal(expected, op.ToString());
        }
예제 #4
0
        public void ToString_ReplaceWithValueA_Ok(string tag, string note, string expected)
        {
            MspOperation op = new MspOperation
            {
                Operator = MspOperator.Replace,
                RangeA   = TextRange.Parse("2x3"),
                ValueA   = "old",
                ValueB   = "new",
                Tag      = tag,
                Note     = note
            };

            Assert.Equal(expected, op.ToString());
        }