Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions source/Karambolo.PO/POGenerator.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
Expand All @@ -25,6 +25,7 @@ public class POGeneratorSettings
public bool SkipComments { get; set; }
public bool IgnoreLineBreaks { get; set; }
public bool IgnoreLongLines { get; set; }
public int MaxLineLength { get; set; } = 80;
}

public class POGenerator
Expand All @@ -43,7 +44,7 @@ private enum Flags
IgnoreLongLines = 0x20,
}

private const int MaxLineLength = 80;
private readonly int _maxLineLength;
private readonly Flags _flags;
private readonly StringBuilder _builder;
private TextWriter _writer;
Expand All @@ -58,6 +59,8 @@ public POGenerator(POGeneratorSettings settings)
if (settings == null)
throw new ArgumentNullException(nameof(settings));

_maxLineLength = settings.MaxLineLength;

if (settings.IgnoreEncoding)
_flags |= Flags.IgnoreEncoding;

Expand Down Expand Up @@ -105,9 +108,9 @@ private int GetStringBreakIndex()
var endIndex = _builder.Length;
int index;

if (!HasFlags(Flags.IgnoreLongLines) && endIndex - _lineStartIndex > MaxLineLength)
if (!HasFlags(Flags.IgnoreLongLines) && endIndex - _lineStartIndex > _maxLineLength)
{
result = _lineStartIndex + MaxLineLength - 1;
result = _lineStartIndex + _maxLineLength - 1;

char c;
for (index = result - 1; index > _lineStartIndex; index--)
Expand Down Expand Up @@ -159,7 +162,7 @@ private void AppendPOString(string value)
_builder.Append('"');
var endIndex = _builder.Length;

if (!(!HasFlags(Flags.IgnoreLongLines) && endIndex - _lineStartIndex > MaxLineLength ||
if (!(!HasFlags(Flags.IgnoreLongLines) && endIndex - _lineStartIndex > _maxLineLength ||
!HasFlags(Flags.IgnoreLineBreaks) && IndexOfNewLine(startIndex + 1, endIndex - 1) >= 0))
return;

Expand Down Expand Up @@ -304,7 +307,7 @@ private IPOEntry CreateHeaderEntry()
headers = new OrderedDictionary<string, string>(_catalog.Headers, StringComparer.OrdinalIgnoreCase);
else
#endif
headers = new Dictionary<string, string>(_catalog.Headers, StringComparer.OrdinalIgnoreCase);
headers = new Dictionary<string, string>(_catalog.Headers, StringComparer.OrdinalIgnoreCase);
}
else
headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
Expand All @@ -329,7 +332,7 @@ private IPOEntry CreateHeaderEntry()
orderedHeaders = headers.AsEnumerable();
else
#endif
orderedHeaders = headers.OrderBy(kvp => kvp.Key, POHeaderDefaultOrderComparer.Instance);
orderedHeaders = headers.OrderBy(kvp => kvp.Key, POHeaderDefaultOrderComparer.Instance);
Copy link
Owner

@adams85 adams85 Oct 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't make code formatting changes in a feature PR.

Suggested change
orderedHeaders = headers.OrderBy(kvp => kvp.Key, POHeaderDefaultOrderComparer.Instance);
orderedHeaders = headers.OrderBy(kvp => kvp.Key, POHeaderDefaultOrderComparer.Instance);


var value =
headers.Count > 0 ?
Expand Down