< Summary

Information
Line coverage
62%
Covered lines: 10
Uncovered lines: 6
Coverable lines: 16
Total lines: 82
Line coverage: 62.5%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddUi(...)100%11100%
AddUi(...)100%11100%
AddUiTranslations(...)100%11100%
UseUi(...)100%210%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Extensions/ServiceCollectionExtensions.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="ServiceCollectionExtensions.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 Microsoft.Extensions.DependencyInjection;
 11using MyNet.Globalization;
 12using MyNet.Humanizer;
 13using MyNet.Observable.Validation;
 14using MyNet.UI.Extensions;
 15using MyNet.UI.Resources;
 16using MyNet.UI.Theming;
 17
 18#pragma warning disable IDE0130
 19namespace MyNet.UI;
 20#pragma warning restore IDE0130
 21
 22public static class ServiceCollectionExtensions
 23{
 24    extension(IServiceCollection services)
 25    {
 26        /// <summary>
 27        /// Registers core UI services shared across host applications, including globalization, localization, inflectio
 28        /// </summary>
 29        /// <param name="supportedCultures">The cultures supported by the UI.</param>
 30        /// <returns>The updated service collection.</returns>
 331        public IServiceCollection AddUi(IEnumerable<CultureInfo>? supportedCultures = null) => services.AddUi(b => b.Wit
 32
 33        /// <summary>
 34        /// Registers core UI services and applies optional configuration (dialogs, locators, navigation, preferences).
 35        /// </summary>
 36        /// <param name="configure">Callback to customize registrations on a <see cref="UiBuilder"/>.</param>
 37        /// <returns>The updated service collection.</returns>
 38        public IServiceCollection AddUi(Action<UiBuilder> configure)
 39        {
 640            ArgumentNullException.ThrowIfNull(configure);
 41
 642            var builder = new UiBuilder(services);
 643            configure(builder);
 644            builder.Apply();
 45
 646            return services;
 47        }
 48
 49        /// <summary>
 50        /// Contributes UI translation resources to the catalog.
 51        /// </summary>
 52        /// <returns>The updated service collection.</returns>
 53        public IServiceCollection AddUiTranslations()
 54        {
 655            services.AddTranslationResource(nameof(UiResources), UiResources.ResourceManager);
 656            services.AddTranslationResource(nameof(MessageResources), MessageResources.ResourceManager);
 657            services.AddTranslationResource(nameof(FormatResources), FormatResources.ResourceManager);
 58
 659            return services;
 60        }
 61    }
 62
 63    extension(IServiceProvider services)
 64    {
 65        /// <summary>
 66        /// Configures shared UI static facades (globalization, localization, humanizer, validation).
 67        /// Configures <see cref="ThemeManager"/> only when <see cref="IThemeService"/> and <see cref="IThemeBaseRegistr
 68        /// </summary>
 69        /// <returns>The updated service provider.</returns>
 70        public IServiceProvider UseUi()
 71        {
 072            services.UseGlobalization();
 073            services.UseLocalization();
 074            services.UseDisplayText();
 075            services.UseThemeManagerIfAvailable();
 076            ValidationLocalization.Configure();
 77
 078            return services;
 79        }
 80    }
 81}
 82