GetLineEndings.cpp
1 |
#include <Core/Core.h> |
---|---|
2 |
|
3 |
using namespace Upp; |
4 |
|
5 |
String GetLineEndings(const String& data, const String& default_eol = "\r\n") |
6 |
{ |
7 |
int q = data.ReverseFind("\n"); |
8 |
if(q >= 0) { |
9 |
if(data.Mid(q - 1, 1) == "\r") |
10 |
return "\r\n"; |
11 |
else
|
12 |
return "\n"; |
13 |
} |
14 |
#if 0
|
15 |
else if(data.ReverseFind("\r") >= 0)
|
16 |
return "\r";
|
17 |
#endif
|
18 |
return default_eol;
|
19 |
} |
20 |
|
21 |
CONSOLE_APP_MAIN |
22 |
{ |
23 |
const String data_crlf = "text\r\n", |
24 |
data_lf = "text\n",
|
25 |
data_default = "text",
|
26 |
data_mid_lf = "text\ntext";
|
27 |
|
28 |
#define TEST(x) Cout() << #x << ":\n" << (GetLineEndings(x) == "\r\n" ? "CRLF" : "LF") << '\n'; |
29 |
TEST(data_crlf) |
30 |
TEST(data_lf) |
31 |
TEST(data_default) |
32 |
TEST(data_mid_lf) |
33 |
|
34 |
const String line_endings = GetLineEndings(data_default, Null);
|
35 |
Cout() << "Check for empty line endings:\n"
|
36 |
<< (IsNull(line_endings) ? "Null" : line_endings == "\r\n" ? "CRLF" : "LF") << '\n'; |
37 |
} |