Commit Graph

9 Commits

Author SHA1 Message Date
Kirill Elagin
57b6845f5e doc: Clarify a bit 2020-06-11 15:58:50 +03:00
Kirill Elagin
d0c01c253c Fix a typo 2020-05-20 01:13:02 +03:00
Kirill Elagin
0744864fd0 Fixup documentation 2020-02-17 19:39:55 -05:00
Kirill Elagin
40069d4b2b Allow not changing file handles to UTF-8
The old interface only allowed one to perform terminal detection on a
handle and change it to UTF-8 if it was not a terminal. Turns our, it
makes sense to sometimes leave the original encoding on a handle even if
it does not point to a terminal.

* Change the interface to separate these two use-cases.
* Extract main-wrappers to a new `Main` module.
2020-02-17 19:39:40 -05:00
Kirill Elagin
f6bc3fc0ca Add correctness tests
* Split out the actual encoding choice logic into a separate Internal
  module to make it possible to cover it with tests.
* Make this function a little more efficient compared to the previous
  purely pure function.
* Keep a completely pure function as a specficiation for ease of reading
  and for testing by comparing the actualy function to the pure one.

* Add tests that check that the pure function makes sense.
* Add tests that compare the output of the real function to the output
  of the pure function on some real handles.
* Add tests that check that functions that are supposed to actually
  modify the encoding of a handle actually do modify it.
2020-02-17 17:58:29 -05:00
Kirill Elagin
83f7b5967e Add lazy versions of Text functions
We had `readFile` and `writeFile` fot strict `Text`, but not for
lazy.

Add lazy versions of the same functions, basically, by copy-pasting.
2020-02-17 17:53:04 -05:00
Kirill Elagin
5b98b490bc Implement hWithEncoding
This function allows one to not only safely set the best encoding on a
file descriptor, but also restore the previous one. The idea is that it
will be used on file descriptors that come from the outside and so we
don’t know how they were used and will be used after us.
2020-02-16 21:49:07 -05:00
Kirill Elagin
934251c90c Change hSetEncoding to choose best encoding
The previous version of hSetEncoding would always set UTF-8.
This can screw things up if it is accidentally called, for example,
on a terminal handle or a handle in binary mode.

Change it to use `hSetBestUtf8Enc` internally so that it now follows the
same loginc in determining the encoding to set.
2020-02-16 21:46:33 -05:00
Kirill Elagin
08407bbe4d First version 2020-02-15 19:15:52 -05:00