< Summary

Information
Class: MyNet.Text.Sanitization.CharacterFilterTextSanitizer
Assembly: MyNet.Text
File(s): https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.Text/Sanitization/CharacterFilterTextSanitizer.cs
Tag: 323_28699572109
Line coverage
100%
Covered lines: 12
Uncovered lines: 0
Coverable lines: 12
Total lines: 44
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%22100%
Apply(...)100%44100%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.Text/Sanitization/CharacterFilterTextSanitizer.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="CharacterFilterTextSanitizer.cs" company="Stéphane ANDRE">
 3// Copyright (c) Stéphane ANDRE. All rights reserved.
 4// </copyright>
 5// -----------------------------------------------------------------------
 6
 7using System;
 8using System.Collections.Generic;
 9using System.Globalization;
 10using System.Linq;
 11using System.Text;
 12
 13namespace MyNet.Text.Sanitization;
 14
 15/// <summary>
 16/// Sanitizes text by preserving only allowed character classes.
 17/// </summary>
 18public sealed class CharacterFilterTextSanitizer(TextSanitizationOptions options) : ITextSanitizerTransform
 19{
 2120    private readonly HashSet<char> _additionalAllowedCharacters = [.. options.AdditionalAllowedCharacters];
 21
 22    /// <inheritdoc/>
 23    public string Apply(string input, CultureInfo culture)
 24    {
 6025        ArgumentNullException.ThrowIfNull(input);
 6026        ArgumentNullException.ThrowIfNull(culture);
 27
 6028        if (input.Length == 0)
 329            return input;
 30
 5731        var sb = new StringBuilder(input.Length);
 32
 69033        foreach (var ch in input.Where(ch => _additionalAllowedCharacters.Contains(ch)
 5734                                             || (options.KeepLetters && char.IsLetter(ch))
 5735                                             || (options.KeepDigits && char.IsDigit(ch))
 5736                                             || (options.KeepWhitespace && char.IsWhiteSpace(ch))))
 37        {
 28838            sb.Append(ch);
 39        }
 40
 5741        return sb.ToString();
 42    }
 43}
 44