/
aprogrammer
/
serilog
Обзор
Документация
Войти
/
aprogrammer
/
serilog
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
src/Serilog/Rendering/Padding.cs
82 строки
3 KB
Ivan Maximov
Make Alignment and LevelOverride readonly (#1884)
29 мар 2023, 05:45
Не верифицирован
29 мар 2023, 05:45
6b4fe06
Код
Авторство
О чём код?
// Copyright 2013-2017 Serilog Contributors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. namespace Serilog.Rendering; static class Padding { static readonly char[] PaddingChars = Enumerable.Repeat(' ', 80).ToArray(); /// <summary> /// Writes the provided value to the output, applying direction-based padding when <paramref name="alignment"/> is provided. /// </summary> public static void Apply(TextWriter output, string value, in Alignment? alignment) { if (alignment == null || value.Length >= alignment.Value.Width) { output.Write(value); return; } var pad = alignment.Value.Width - value.Length; if (alignment.Value.Direction == AlignmentDirection.Left) output.Write(value); if (pad <= PaddingChars.Length) { output.Write(PaddingChars, 0, pad); } else { output.Write(new string(' ', pad)); } if (alignment.Value.Direction == AlignmentDirection.Right) output.Write(value); } #if FEATURE_WRITE_STRINGBUILDER /// <summary> /// Writes the provided value to the output, applying direction-based padding when <paramref name="alignment"/> is provided. /// This is a full copy of the method above that allows to write <see cref="StringBuilder"/> directly into provided /// <paramref name="output"/> without <see cref="StringBuilder.ToString()"/> call on the caller side. /// </summary> public static void Apply(TextWriter output, StringBuilder value, in Alignment? alignment) { if (alignment == null || value.Length >= alignment.Value.Width) { output.Write(value); return; } var pad = alignment.Value.Width - value.Length; if (alignment.Value.Direction == AlignmentDirection.Left) output.Write(value); if (pad <= PaddingChars.Length) { output.Write(PaddingChars, 0, pad); } else { output.Write(new string(' ', pad)); } if (alignment.Value.Direction == AlignmentDirection.Right) output.Write(value); } #endif }