Пример #1
0
        /// <inheritdoc />
        public string Process(string input)
        {
            input = LinePattern.Replace(input, string.Empty);
            input = BlockPattern.Replace(input, string.Empty);

            return(input);
        }
Пример #2
0
        private void MoveDown()
        {
            if (mBlockPattern == null)
            {
                return;
            }

            Debug.Log("MoveDown");
            var pattern    = mBlockPattern.PatternType;
            var blockGroup = mBlockPattern.BlockNodes;

            var newBlocks = new BlockNode[4];

            //觸底或是下方有別的方塊
            if (mTetrisGrid.IsGround(blockGroup) || mTetrisGrid.IsBlock(blockGroup, (int)MoveDirection.Down))
            {
                SetBlocksType(blockGroup, BlockNode.BlockType.Stuck);
                mBlockPattern = null;

                Debug.LogWarning("Can't move down");
            }
            else
            {
                var oldBlocks = mBlockPattern.BlockNodes;
                ClearBlockStatus(oldBlocks);

                for (int i = 0; i < blockGroup.Length; i++)
                {
                    newBlocks[i] = mTetrisGrid.GetNode(blockGroup[i].X, blockGroup[i].Y + 1);
                }

                mBlockPattern.SetBlockNodes(newBlocks);
                SetView(mBlockPattern);
            }
        }
Пример #3
0
        private string ElementMatchHandler(Definition definition, Match match)
        {
            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            if (match == null)
            {
                throw new ArgumentNullException(nameof(match));
            }

            var pattern = definition.Patterns.First
                          (
                x => match.Groups[x.Key]
                .Success
                          )
                          .Value;

            return(pattern switch
            {
                BlockPattern blockPattern => ProcessBlockPatternMatch(definition, blockPattern, match),
                MarkupPattern markupPattern => ProcessMarkupPatternMatch(definition, markupPattern, match),
                WordPattern wordPattern => ProcessWordPatternMatch(definition, wordPattern, match),
                _ => match.Value,
            });
Пример #4
0
        protected override string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match)
        {
            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            if (pattern == null)
            {
                throw new ArgumentNullException(nameof(pattern));
            }

            if (match == null)
            {
                throw new ArgumentNullException(nameof(match));
            }

            if (!UseCss)
            {
                var patternStyle = HtmlEngineHelper.CreatePatternStyle(pattern.Style);

                return(string.Format(STYLE_SPAN_FORMAT, patternStyle, match.Value));
            }
            else
            {
                var cssClassName = HtmlEngineHelper.CreateCssClassName(definition.Name, pattern.Name);

                return(string.Format(CLASS_SPAN_FORMAT, cssClassName, match.Value));
            }
        }
Пример #5
0
        private void CreateNewPattern()
        {
            mBlockPattern = new BlockPattern();
            var blockGroup = GetBlockGroup(mBlockPattern.PatternType);

            mBlockPattern.SetBlockNodes(blockGroup);

            SetView(mBlockPattern);
        }
Пример #6
0
        protected override string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match)
        {
            if (!UseCss)
            {
                var patternStyle = HtmlEngineHelper.CreatePatternStyle(pattern.Style);

                return(string.Format(STYLE_SPAN_FORMAT, patternStyle, match.Value));
            }

            var cssClassName = HtmlEngineHelper.CreateCssClassName(definition.Name, pattern.Name);

            return(string.Format(CLASS_SPAN_FORMAT, cssClassName, match.Value));
        }
Пример #7
0
    public void ShouldCreateGroupFromGroupPattern()
    {
        IGroup group = groupFactory.Create(setting, blockPattern, groupPattern);

        group.SetLocation(new Coord(0, 0));
        foreach (Coord coord in locationMock[0])
        {
            group.ChildrenLocation.Contains(coord);
        }

        int[]         numbers         = new int[] { 3, 1, 5 };
        IBlockPattern blockPatternTwo = BlockPattern.CreateFromNumbers(numbers);
        IGroup        groupTwo        = groupFactory.Create(setting, blockPatternTwo, groupPattern);

        for (int i = 0; i < numbers.Length; i++)
        {
            Assert.AreEqual((BlockType)numbers[i] - 1, groupTwo.Children[i].BlockType);
        }
    }
Пример #8
0
        protected override string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match)
        {
            if (!UseCss)
            {
                var    patternStyle = HtmlEngineHelper.CreatePatternStyle(pattern.Style);
                string val          = match.Value;
                if (!pattern.IncludePatternTags)
                {
                    string prefix = WebUtility.HtmlEncode(pattern.BeginsWith);
                    string suffix = WebUtility.HtmlEncode(pattern.EndsWith);
                    if (val.StartsWith(prefix))
                    {
                        val = val.TrimStart(prefix.ToCharArray());
                    }
                    else
                    {
                        prefix = "";
                    }
                    if (val.EndsWith(suffix))
                    {
                        val = val.TrimEnd(suffix.ToCharArray());
                    }
                    else
                    {
                        suffix = "";
                    }

                    return($"{prefix}{String.Format(StyleSpanFormat, patternStyle, val)}{suffix}");
                }
                else
                {
                    return(String.Format(StyleSpanFormat, patternStyle, val));
                }
            }

            var cssClassName = HtmlEngineHelper.CreateCssClassName(definition.Name, pattern.Name);

            return(String.Format(ClassSpanFormat, cssClassName, match.Value));
        }
Пример #9
0
        protected override Span[] ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match)
        {
            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            if (pattern == null)
            {
                throw new ArgumentNullException(nameof(pattern));
            }

            if (match == null)
            {
                throw new ArgumentNullException(nameof(match));
            }

            return(new[] { new Span()
                           {
                               Text = match.Value,
                               Style = GetSpanStyle(pattern.Style)
                           } });
        }
Пример #10
0
        protected override string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match)
        {
            if (!string.IsNullOrEmpty(pattern.RawRegex))
            {
                Match reMatch = Regex.Match(match.Value, pattern.RawRegex);

                if (reMatch.Groups.Count > 1)
                {
                    HighlightedSpans.Add(new FormattedString(match.Value.Substring(0, reMatch.Groups[1].Index), Colours.Black, false, false));
                    HighlightedSpans.Add(new FormattedString(reMatch.Groups[1].Value, pattern.Style.Colors.ForeColor, pattern.Style.Font.IsBold, pattern.Style.Font.IsItalic));
                    HighlightedSpans.Add(new FormattedString(match.Value.Substring(reMatch.Groups[1].Index + reMatch.Groups[1].Length), Colours.Black, false, false));
                }
                else
                {
                    HighlightedSpans.Add(new FormattedString(match.Value, pattern.Style.Colors.ForeColor, pattern.Style.Font.IsBold, pattern.Style.Font.IsItalic));
                }
            }
            else
            {
                HighlightedSpans.Add(new FormattedString(match.Value, pattern.Style.Colors.ForeColor, pattern.Style.Font.IsBold, pattern.Style.Font.IsItalic));
            }
            return(match.Value);
        }
Пример #11
0
        protected override string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match)
        {
            var style = CreateRtfPatternStyle(pattern.Style.Colors.ForeColor, pattern.Style.Colors.BackColor, pattern.Style.Font);

            return("{" + String.Format(RtfFormat, style, match.Value) + "}");
        }
Пример #12
0
 protected abstract string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match);
Пример #13
0
 protected override string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match)
 {
     return(ProcessPatternMatch(pattern, match));
 }
Пример #14
0
 private void SetView(BlockPattern blockPattern)
 {
     m_GridView.SetBlockView(blockPattern.BlockNodes);
 }