< Summary

Information
Class: MyNet.Text.Normalization.WhitespaceNormalizationTransform
Assembly: MyNet.Text
File(s): https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.Text/Normalization/WhitespaceNormalizationTransform.cs
Tag: 323_28699572109
Line coverage
93%
Covered lines: 15
Uncovered lines: 1
Coverable lines: 16
Total lines: 49
Line coverage: 93.7%
Branch coverage
71%
Covered branches: 10
Total branches: 14
Branch coverage: 71.4%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Apply(...)71.42%141493.75%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.Text/Normalization/WhitespaceNormalizationTransform.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="WhitespaceNormalizationTransform.cs" company="Stéphane ANDRE">
 3// Copyright (c) Stéphane ANDRE. All rights reserved.
 4// </copyright>
 5// -----------------------------------------------------------------------
 6
 7using System;
 8using System.Globalization;
 9using System.Text;
 10
 11namespace MyNet.Text.Normalization;
 12
 13/// <summary>
 14/// Trims text and optionally collapses whitespace runs.
 15/// </summary>
 16public sealed class WhitespaceNormalizationTransform(TextNormalizationOptions options) : ITextNormalizationTransform
 17{
 18    /// <inheritdoc/>
 19    public string Apply(string input, CultureInfo culture)
 20    {
 621        ArgumentNullException.ThrowIfNull(input);
 622        ArgumentNullException.ThrowIfNull(culture);
 23
 624        var value = options.Trim ? input.Trim() : input;
 625        if (!options.CollapseWhitespace || value.Length == 0)
 026            return value;
 27
 628        var sb = new StringBuilder(value.Length);
 629        var seenWhitespace = false;
 30
 21631        foreach (var ch in value)
 32        {
 10233            if (char.IsWhiteSpace(ch))
 34            {
 2735                seenWhitespace = true;
 2736                continue;
 37            }
 38
 7539            if (seenWhitespace && sb.Length > 0)
 940                sb.Append(' ');
 41
 7542            sb.Append(ch);
 7543            seenWhitespace = false;
 44        }
 45
 646        return sb.ToString();
 47    }
 48}
 49