File tree 3 files changed +45
-1
lines changed
3 files changed +45
-1
lines changed Original file line number Diff line number Diff line change @@ -135,5 +135,6 @@ defmodule Expo.PO.Composer do
135
135
defp escape_char ( ?\n ) , do: ~S( \n)
136
136
defp escape_char ( ?\t ) , do: ~S( \t)
137
137
defp escape_char ( ?\r ) , do: ~S( \r)
138
+ defp escape_char ( ?\\ ) , do: << ?\\ :: utf8 , ?\\ :: utf8 >>
138
139
defp escape_char ( char ) , do: << char >>
139
140
end
Original file line number Diff line number Diff line change @@ -415,6 +415,45 @@ defmodule Expo.ParserTest do
415
415
end
416
416
end
417
417
418
+ describe "unescaping" do
419
+ test "unescapes special characters" do
420
+ assert [
421
+ % Message.Singular {
422
+ msgid: [ "backslash" ] ,
423
+ msgstr: [ << ?\\ :: utf8 >> ]
424
+ } ,
425
+ % Message.Singular {
426
+ msgid: [ "double backslash" ] ,
427
+ msgstr: [ << ?\\ :: utf8 , ?\\ :: utf8 >> ]
428
+ } ,
429
+ % Message.Singular {
430
+ msgid: [ "tab" ] ,
431
+ msgstr: [ << ?\t :: utf8 >> ]
432
+ } ,
433
+ % Message.Singular {
434
+ msgid: [ "newline" ] ,
435
+ msgstr: [ << ?\r :: utf8 , ?\n :: utf8 >> ]
436
+ } ,
437
+ % Message.Singular {
438
+ msgid: [ "quote" ] ,
439
+ msgstr: [ << ?" :: utf8 >> ]
440
+ }
441
+ ] =
442
+ parse ( ~S"""
443
+ msgid "backslash"
444
+ msgstr "\\"
445
+ msgid "double backslash"
446
+ msgstr "\\\\"
447
+ msgid "tab"
448
+ msgstr "\t"
449
+ msgid "newline"
450
+ msgstr "\r\n"
451
+ msgid "quote"
452
+ msgstr "\" "
453
+ """ )
454
+ end
455
+ end
456
+
418
457
defp parse ( string ) do
419
458
case PO . parse_string ( string ) do
420
459
{ :ok , % Messages { messages: messages } } ->
Original file line number Diff line number Diff line change @@ -417,7 +417,8 @@ defmodule Expo.POTest do
417
417
headers: [ ] ,
418
418
messages: [
419
419
% Message.Singular { msgid: [ ~s( "quotes") ] , msgstr: [ ~s( foo "bar" baz) ] } ,
420
- % Message.Singular { msgid: [ ~s( new\n lines\r ) ] , msgstr: [ ~s( and\t tabs) ] }
420
+ % Message.Singular { msgid: [ ~s( new\n lines\r ) ] , msgstr: [ ~s( and\t tabs) ] } ,
421
+ % Message.Singular { msgid: [ ~s( backslashes\\ ) ] , msgstr: [ ~s( and \\ \\ double backslashes) ] }
421
422
]
422
423
}
423
424
@@ -427,6 +428,9 @@ defmodule Expo.POTest do
427
428
428
429
msgid "new\nlines\r"
429
430
msgstr "and\ttabs"
431
+
432
+ msgid "backslashes\\"
433
+ msgstr "and \\\\ double backslashes"
430
434
"""
431
435
end
432
436
You can’t perform that action at this time.
0 commit comments