diff --git a/source/Karambolo.PO/POGenerator.cs b/source/Karambolo.PO/POGenerator.cs index caab853..284d086 100644 --- a/source/Karambolo.PO/POGenerator.cs +++ b/source/Karambolo.PO/POGenerator.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; using System.IO; @@ -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 @@ -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; @@ -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; @@ -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--) @@ -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; @@ -304,7 +307,7 @@ private IPOEntry CreateHeaderEntry() headers = new OrderedDictionary(_catalog.Headers, StringComparer.OrdinalIgnoreCase); else #endif - headers = new Dictionary(_catalog.Headers, StringComparer.OrdinalIgnoreCase); + headers = new Dictionary(_catalog.Headers, StringComparer.OrdinalIgnoreCase); } else headers = new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -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); var value = headers.Count > 0 ?