/// <inheritdoc /> public string Process(string input) { input = LinePattern.Replace(input, string.Empty); input = BlockPattern.Replace(input, string.Empty); return(input); }
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); } }
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, });
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)); } }
private void CreateNewPattern() { mBlockPattern = new BlockPattern(); var blockGroup = GetBlockGroup(mBlockPattern.PatternType); mBlockPattern.SetBlockNodes(blockGroup); SetView(mBlockPattern); }
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)); }
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); } }
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)); }
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) } }); }
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); }
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) + "}"); }
protected abstract string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match);
protected override string ProcessBlockPatternMatch(Definition definition, BlockPattern pattern, Match match) { return(ProcessPatternMatch(pattern, match)); }
private void SetView(BlockPattern blockPattern) { m_GridView.SetBlockView(blockPattern.BlockNodes); }