diff --git a/src/Strata.SqlTools.Markdown/Expressions/ExpressionGenerator.cs b/src/Strata.SqlTools.Markdown/Expressions/ExpressionGenerator.cs index 99b384a..67f4de5 100644 --- a/src/Strata.SqlTools.Markdown/Expressions/ExpressionGenerator.cs +++ b/src/Strata.SqlTools.Markdown/Expressions/ExpressionGenerator.cs @@ -361,13 +361,7 @@ public class ExpressionGenerator : IVisitor } private static string TruncateText(string text, int maxLength) - { - if (string.IsNullOrWhiteSpace(text) || text.Length <= maxLength) - { - return text; - } - return string.Concat(text.AsSpan(0, maxLength), "..."); - } + => Internal.MarkdownTextHelpers.TruncateText(text, maxLength); #region IVisitor Implementation diff --git a/src/Strata.SqlTools.Markdown/Internal/MarkdownTextHelpers.cs b/src/Strata.SqlTools.Markdown/Internal/MarkdownTextHelpers.cs new file mode 100644 index 0000000..f6f97b1 --- /dev/null +++ b/src/Strata.SqlTools.Markdown/Internal/MarkdownTextHelpers.cs @@ -0,0 +1,21 @@ +namespace Strata.SqlTools.Markdown.Internal; + +/// +/// Small text utilities shared by the Markdown generators. +/// Kept internal so they don't widen the public surface of this assembly. +/// +internal static class MarkdownTextHelpers +{ + /// + /// Truncates a string to characters, appending an ellipsis when truncated. + /// Returns the input unchanged when null/whitespace or already short enough. + /// + public static string TruncateText(string text, int maxLength) + { + if (string.IsNullOrWhiteSpace(text) || text.Length <= maxLength) + { + return text; + } + return string.Concat(text.AsSpan(0, maxLength), "..."); + } +} diff --git a/src/Strata.SqlTools.Markdown/SqlServer/QueryBreakdownGenerator.cs b/src/Strata.SqlTools.Markdown/SqlServer/QueryBreakdownGenerator.cs index 051cc8a..dcb44a6 100644 --- a/src/Strata.SqlTools.Markdown/SqlServer/QueryBreakdownGenerator.cs +++ b/src/Strata.SqlTools.Markdown/SqlServer/QueryBreakdownGenerator.cs @@ -191,17 +191,7 @@ public static class QueryBreakdownGenerator .Replace(">", ">"); } - /// - /// Truncates text to a maximum length and adds ellipsis if needed. - /// private static string TruncateText(string text, int maxLength) - { - if (string.IsNullOrWhiteSpace(text) || text.Length <= maxLength) - { - return text; - } - - return string.Concat(text.AsSpan(0, maxLength), "..."); - } + => Internal.MarkdownTextHelpers.TruncateText(text, maxLength); } diff --git a/src/Strata.SqlTools.Markdown/SqlServer/SqlStatementGenerator.cs b/src/Strata.SqlTools.Markdown/SqlServer/SqlStatementGenerator.cs index 49bc4da..f3dc210 100644 --- a/src/Strata.SqlTools.Markdown/SqlServer/SqlStatementGenerator.cs +++ b/src/Strata.SqlTools.Markdown/SqlServer/SqlStatementGenerator.cs @@ -112,18 +112,8 @@ public static class SqlStatementGenerator .Replace("\r", ""); } - /// - /// Truncates text to a maximum length. - /// private static string TruncateText(string text, int maxLength) - { - if (string.IsNullOrWhiteSpace(text) || text.Length <= maxLength) - { - return text; - } - - return string.Concat(text.AsSpan(0, maxLength), "..."); - } + => Internal.MarkdownTextHelpers.TruncateText(text, maxLength); /// /// Cleans table name for use in Mermaid diagrams.