private static LineTermination DetectLineTermination(Stream stream, LineTermination defaultLineTermination) { int c; while ((c = stream.ReadByte()) != -1) { if (c == '\r') { c = stream.ReadByte(); if (c != '\n') { return(LineTermination.Mac); } return(LineTermination.Pc); } else if (c == '\n') { return(LineTermination.Unix); } } // The default when we don't have any line ending. return(defaultLineTermination); }
public static void NormalizeLineTermination(StringBuilder target, string value, LineTermination mode) { if (target == null) throw new ArgumentNullException("target"); if (value == null) return; string lineTermination = GetNewline(mode); for (int i = 0; i < value.Length; i++) { char c = value[i]; switch (c) { case '\r': if (i < value.Length - 1 && value[i + 1] == '\n') i++; target.Append(lineTermination); break; case '\n': target.Append(lineTermination); break; default: target.Append(c); break; } } }
public TextFileType(Encoding encoding, LineTermination lineTermination) : base(FileTypeType.Text) { if (encoding == null) throw new ArgumentNullException("encoding"); Encoding = encoding; LineTermination = lineTermination; }
public TextFileType(Encoding encoding, LineTermination lineTermination) : base(FileTypeType.Text) { if (encoding == null) { throw new ArgumentNullException("encoding"); } Encoding = encoding; LineTermination = lineTermination; }
public static string NormalizeLineTermination(string value, LineTermination mode) { if (value == null) return null; var sb = new StringBuilder(); NormalizeLineTermination(sb, value, mode); return sb.ToString(); }
public static string NormalizeLineTermination(string value, LineTermination mode) { if (value == null) { return(null); } var sb = new StringBuilder(); NormalizeLineTermination(sb, value, mode); return(sb.ToString()); }
public static string GetLineTermination(LineTermination mode) { switch (mode) { case LineTermination.Pc: return "\r\n"; case LineTermination.Unix: return "\n"; case LineTermination.Mac: return "\r"; default: throw new ArgumentOutOfRangeException("mode"); } }
public static string GetNewline(LineTermination mode) { switch (mode) { case LineTermination.Pc: return("\r\n"); case LineTermination.Unix: return("\n"); case LineTermination.Mac: return("\r"); default: throw new ArgumentOutOfRangeException("mode"); } }
public static TextFileType FromStream(Stream stream, string extension, Encoding defaultEncoding, LineTermination defaultLineTermination) { if (stream == null) throw new ArgumentNullException("stream"); if (extension == null) throw new ArgumentNullException("extension"); if (defaultEncoding == null) defaultEncoding = Encoding.ASCII; if (stream.Length == 0) return new TextFileType(defaultEncoding, defaultLineTermination); stream.Position = 0; var encoding = DetectEncoding(stream); if (encoding != null) { int bomSize = (int)stream.Position; byte[] bom = null; if (bomSize > 0) { stream.Position = 0; bom = new byte[bomSize]; stream.Read(bom, 0, bom.Length); } Debug.Assert(ArrayUtil.Equals( bom ?? new byte[0], encoding.GetPreamble() )); return new TextFileType(encoding, DetectLineTermination(stream, defaultLineTermination)); } encoding = GuessEncoding(stream, defaultEncoding); if (encoding != null) return new TextFileType(encoding, DetectLineTermination(stream, defaultLineTermination)); return null; }
public static TextFileType FromStream(Stream stream, string extension, Encoding defaultEncoding, LineTermination defaultLineTermination) { if (stream == null) { throw new ArgumentNullException("stream"); } if (extension == null) { throw new ArgumentNullException("extension"); } if (defaultEncoding == null) { defaultEncoding = Encoding.ASCII; } if (stream.Length == 0) { return(new TextFileType(defaultEncoding, defaultLineTermination)); } stream.Position = 0; var encoding = DetectEncoding(stream); if (encoding != null) { int bomSize = (int)stream.Position; byte[] bom = null; if (bomSize > 0) { stream.Position = 0; bom = new byte[bomSize]; stream.Read(bom, 0, bom.Length); } Debug.Assert(ArrayUtil.Equals( bom ?? new byte[0], encoding.GetPreamble() )); return(new TextFileType(encoding, DetectLineTermination(stream, defaultLineTermination))); } encoding = GuessEncoding(stream, defaultEncoding); if (encoding != null) { return(new TextFileType(encoding, DetectLineTermination(stream, defaultLineTermination))); } return(null); }
private static LineTermination DetectLineTermination(Stream stream, LineTermination defaultLineTermination) { int c; while ((c = stream.ReadByte()) != -1) { if (c == '\r') { c = stream.ReadByte(); if (c != '\n') return LineTermination.Mac; return LineTermination.Pc; } else if (c == '\n') { return LineTermination.Unix; } } // The default when we don't have any line ending. return defaultLineTermination; }
public static void NormalizeLineTermination(StringBuilder target, string value, LineTermination mode) { if (target == null) { throw new ArgumentNullException("target"); } if (value == null) { return; } string lineTermination = GetNewline(mode); for (int i = 0; i < value.Length; i++) { char c = value[i]; switch (c) { case '\r': if (i < value.Length - 1 && value[i + 1] == '\n') { i++; } target.Append(lineTermination); break; case '\n': target.Append(lineTermination); break; default: target.Append(c); break; } } }