/usr/share/doc/libghc-text-doc/html/src/Data-Text-Encoding-Error.html is in libghc-text-doc 1.2.2.2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>Data/Text/Encoding/Error.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{-# LANGUAGE CPP, DeriveDataTypeable #-}</span>
<a name="line-2"></a><span class='hs-cpp'>#if __GLASGOW_HASKELL__ >= 704</span>
<a name="line-3"></a><span class='hs-comment'>{-# LANGUAGE Safe #-}</span>
<a name="line-4"></a><span class='hs-cpp'>#elif __GLASGOW_HASKELL__ >= 702</span>
<a name="line-5"></a><span class='hs-comment'>{-# LANGUAGE Trustworthy #-}</span>
<a name="line-6"></a><span class='hs-cpp'>#endif</span>
<a name="line-7"></a><span class='hs-comment'>-- |</span>
<a name="line-8"></a><span class='hs-comment'>-- Module : Data.Text.Encoding.Error</span>
<a name="line-9"></a><span class='hs-comment'>-- Copyright : (c) Bryan O'Sullivan 2009</span>
<a name="line-10"></a><span class='hs-comment'>--</span>
<a name="line-11"></a><span class='hs-comment'>-- License : BSD-style</span>
<a name="line-12"></a><span class='hs-comment'>-- Maintainer : bos@serpentine.com</span>
<a name="line-13"></a><span class='hs-comment'>-- Stability : experimental</span>
<a name="line-14"></a><span class='hs-comment'>-- Portability : GHC</span>
<a name="line-15"></a><span class='hs-comment'>--</span>
<a name="line-16"></a><span class='hs-comment'>-- Types and functions for dealing with encoding and decoding errors</span>
<a name="line-17"></a><span class='hs-comment'>-- in Unicode text.</span>
<a name="line-18"></a><span class='hs-comment'>--</span>
<a name="line-19"></a><span class='hs-comment'>-- The standard functions for encoding and decoding text are strict,</span>
<a name="line-20"></a><span class='hs-comment'>-- which is to say that they throw exceptions on invalid input. This</span>
<a name="line-21"></a><span class='hs-comment'>-- is often unhelpful on real world input, so alternative functions</span>
<a name="line-22"></a><span class='hs-comment'>-- exist that accept custom handlers for dealing with invalid inputs.</span>
<a name="line-23"></a><span class='hs-comment'>-- These 'OnError' handlers are normal Haskell functions. You can use</span>
<a name="line-24"></a><span class='hs-comment'>-- one of the presupplied functions in this module, or you can write a</span>
<a name="line-25"></a><span class='hs-comment'>-- custom handler of your own.</span>
<a name="line-26"></a>
<a name="line-27"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Encoding</span><span class='hs-varop'>.</span><span class='hs-conid'>Error</span>
<a name="line-28"></a> <span class='hs-layout'>(</span>
<a name="line-29"></a> <span class='hs-comment'>-- * Error handling types</span>
<a name="line-30"></a> <span class='hs-conid'>UnicodeException</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-31"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OnError</span>
<a name="line-32"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OnDecodeError</span>
<a name="line-33"></a> <span class='hs-layout'>,</span> <span class='hs-conid'>OnEncodeError</span>
<a name="line-34"></a> <span class='hs-comment'>-- * Useful error handling functions</span>
<a name="line-35"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>lenientDecode</span>
<a name="line-36"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>strictDecode</span>
<a name="line-37"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>strictEncode</span>
<a name="line-38"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>ignore</span>
<a name="line-39"></a> <span class='hs-layout'>,</span> <span class='hs-varid'>replace</span>
<a name="line-40"></a> <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-41"></a>
<a name="line-42"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>DeepSeq</span> <span class='hs-layout'>(</span><span class='hs-conid'>NFData</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-43"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-layout'>(</span><span class='hs-conid'>Exception</span><span class='hs-layout'>,</span> <span class='hs-varid'>throw</span><span class='hs-layout'>)</span>
<a name="line-44"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Typeable</span> <span class='hs-layout'>(</span><span class='hs-conid'>Typeable</span><span class='hs-layout'>)</span>
<a name="line-45"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Word</span> <span class='hs-layout'>(</span><span class='hs-conid'>Word8</span><span class='hs-layout'>)</span>
<a name="line-46"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Numeric</span> <span class='hs-layout'>(</span><span class='hs-varid'>showHex</span><span class='hs-layout'>)</span>
<a name="line-47"></a>
<a name="line-48"></a><a name="OnError"></a><span class='hs-comment'>-- | Function type for handling a coding error. It is supplied with</span>
<a name="line-49"></a><a name="OnError"></a><span class='hs-comment'>-- two inputs:</span>
<a name="line-50"></a><a name="OnError"></a><span class='hs-comment'>--</span>
<a name="line-51"></a><a name="OnError"></a><span class='hs-comment'>-- * A 'String' that describes the error.</span>
<a name="line-52"></a><a name="OnError"></a><span class='hs-comment'>--</span>
<a name="line-53"></a><a name="OnError"></a><span class='hs-comment'>-- * The input value that caused the error. If the error arose</span>
<a name="line-54"></a><a name="OnError"></a><span class='hs-comment'>-- because the end of input was reached or could not be identified</span>
<a name="line-55"></a><a name="OnError"></a><span class='hs-comment'>-- precisely, this value will be 'Nothing'.</span>
<a name="line-56"></a><a name="OnError"></a><span class='hs-comment'>--</span>
<a name="line-57"></a><a name="OnError"></a><span class='hs-comment'>-- If the handler returns a value wrapped with 'Just', that value will</span>
<a name="line-58"></a><a name="OnError"></a><span class='hs-comment'>-- be used in the output as the replacement for the invalid input. If</span>
<a name="line-59"></a><a name="OnError"></a><span class='hs-comment'>-- it returns 'Nothing', no value will be used in the output.</span>
<a name="line-60"></a><a name="OnError"></a><span class='hs-comment'>--</span>
<a name="line-61"></a><a name="OnError"></a><span class='hs-comment'>-- Should the handler need to abort processing, it should use 'error'</span>
<a name="line-62"></a><a name="OnError"></a><span class='hs-comment'>-- or 'throw' an exception (preferably a 'UnicodeException'). It may</span>
<a name="line-63"></a><a name="OnError"></a><span class='hs-comment'>-- use the description provided to construct a more helpful error</span>
<a name="line-64"></a><a name="OnError"></a><span class='hs-comment'>-- report.</span>
<a name="line-65"></a><a name="OnError"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>OnError</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>b</span>
<a name="line-66"></a>
<a name="line-67"></a><a name="OnDecodeError"></a><span class='hs-comment'>-- | A handler for a decoding error.</span>
<a name="line-68"></a><a name="OnDecodeError"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>OnDecodeError</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OnError</span> <span class='hs-conid'>Word8</span> <span class='hs-conid'>Char</span>
<a name="line-69"></a>
<a name="line-70"></a><a name="OnEncodeError"></a><span class='hs-comment'>-- | A handler for an encoding error.</span>
<a name="line-71"></a><a name="OnEncodeError"></a><span class='hs-comment'>{-# DEPRECATED OnEncodeError "This exception is never used in practice, and will be removed." #-}</span>
<a name="line-72"></a><a name="OnEncodeError"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>OnEncodeError</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>OnError</span> <span class='hs-conid'>Char</span> <span class='hs-conid'>Word8</span>
<a name="line-73"></a>
<a name="line-74"></a><a name="UnicodeException"></a><span class='hs-comment'>-- | An exception type for representing Unicode encoding errors.</span>
<a name="line-75"></a><a name="UnicodeException"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>UnicodeException</span> <span class='hs-keyglyph'>=</span>
<a name="line-76"></a> <span class='hs-conid'>DecodeError</span> <span class='hs-conid'>String</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>Word8</span><span class='hs-layout'>)</span>
<a name="line-77"></a> <span class='hs-comment'>-- ^ Could not decode a byte sequence because it was invalid under</span>
<a name="line-78"></a> <span class='hs-comment'>-- the given encoding, or ran out of input in mid-decode.</span>
<a name="line-79"></a> <span class='hs-keyglyph'>|</span> <span class='hs-conid'>EncodeError</span> <span class='hs-conid'>String</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>Char</span><span class='hs-layout'>)</span>
<a name="line-80"></a> <span class='hs-comment'>-- ^ Tried to encode a character that could not be represented</span>
<a name="line-81"></a> <span class='hs-comment'>-- under the given encoding, or ran out of input in mid-encode.</span>
<a name="line-82"></a> <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Eq</span><span class='hs-layout'>,</span> <span class='hs-conid'>Typeable</span><span class='hs-layout'>)</span>
<a name="line-83"></a>
<a name="line-84"></a><span class='hs-comment'>{-# DEPRECATED EncodeError "This constructor is never used, and will be removed." #-}</span>
<a name="line-85"></a>
<a name="line-86"></a><a name="showUnicodeException"></a><span class='hs-definition'>showUnicodeException</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>UnicodeException</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>String</span>
<a name="line-87"></a><span class='hs-definition'>showUnicodeException</span> <span class='hs-layout'>(</span><span class='hs-conid'>DecodeError</span> <span class='hs-varid'>desc</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-88"></a> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Cannot decode byte '\\x"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>showHex</span> <span class='hs-varid'>w</span> <span class='hs-layout'>(</span><span class='hs-str'>"': "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>desc</span><span class='hs-layout'>)</span>
<a name="line-89"></a><span class='hs-definition'>showUnicodeException</span> <span class='hs-layout'>(</span><span class='hs-conid'>DecodeError</span> <span class='hs-varid'>desc</span> <span class='hs-conid'>Nothing</span><span class='hs-layout'>)</span>
<a name="line-90"></a> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Cannot decode input: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>desc</span>
<a name="line-91"></a><span class='hs-definition'>showUnicodeException</span> <span class='hs-layout'>(</span><span class='hs-conid'>EncodeError</span> <span class='hs-varid'>desc</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-92"></a> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Cannot encode character '\\x"</span> <span class='hs-varop'>++</span> <span class='hs-varid'>showHex</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromEnum</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-str'>"': "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>desc</span><span class='hs-layout'>)</span>
<a name="line-93"></a><span class='hs-definition'>showUnicodeException</span> <span class='hs-layout'>(</span><span class='hs-conid'>EncodeError</span> <span class='hs-varid'>desc</span> <span class='hs-conid'>Nothing</span><span class='hs-layout'>)</span>
<a name="line-94"></a> <span class='hs-keyglyph'>=</span> <span class='hs-str'>"Cannot encode input: "</span> <span class='hs-varop'>++</span> <span class='hs-varid'>desc</span>
<a name="line-95"></a>
<a name="line-96"></a><a name="instance%20Show%20UnicodeException"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Show</span> <span class='hs-conid'>UnicodeException</span> <span class='hs-keyword'>where</span>
<a name="line-97"></a> <span class='hs-varid'>show</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>showUnicodeException</span>
<a name="line-98"></a>
<a name="line-99"></a><a name="instance%20Exception%20UnicodeException"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>Exception</span> <span class='hs-conid'>UnicodeException</span>
<a name="line-100"></a>
<a name="line-101"></a><a name="instance%20NFData%20UnicodeException"></a><span class='hs-keyword'>instance</span> <span class='hs-conid'>NFData</span> <span class='hs-conid'>UnicodeException</span> <span class='hs-keyword'>where</span>
<a name="line-102"></a> <span class='hs-varid'>rnf</span> <span class='hs-layout'>(</span><span class='hs-conid'>DecodeError</span> <span class='hs-varid'>desc</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>rnf</span> <span class='hs-varid'>desc</span> <span class='hs-varop'>`seq`</span> <span class='hs-varid'>rnf</span> <span class='hs-varid'>w</span> <span class='hs-varop'>`seq`</span> <span class='hs-conid'>()</span>
<a name="line-103"></a> <span class='hs-varid'>rnf</span> <span class='hs-layout'>(</span><span class='hs-conid'>EncodeError</span> <span class='hs-varid'>desc</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>rnf</span> <span class='hs-varid'>desc</span> <span class='hs-varop'>`seq`</span> <span class='hs-varid'>rnf</span> <span class='hs-varid'>c</span> <span class='hs-varop'>`seq`</span> <span class='hs-conid'>()</span>
<a name="line-104"></a>
<a name="line-105"></a><a name="strictDecode"></a><span class='hs-comment'>-- | Throw a 'UnicodeException' if decoding fails.</span>
<a name="line-106"></a><span class='hs-definition'>strictDecode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OnDecodeError</span>
<a name="line-107"></a><span class='hs-definition'>strictDecode</span> <span class='hs-varid'>desc</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>throw</span> <span class='hs-layout'>(</span><span class='hs-conid'>DecodeError</span> <span class='hs-varid'>desc</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span>
<a name="line-108"></a>
<a name="line-109"></a><a name="lenientDecode"></a><span class='hs-comment'>-- | Replace an invalid input byte with the Unicode replacement</span>
<a name="line-110"></a><span class='hs-comment'>-- character U+FFFD.</span>
<a name="line-111"></a><span class='hs-definition'>lenientDecode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OnDecodeError</span>
<a name="line-112"></a><span class='hs-definition'>lenientDecode</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-chr'>'\xfffd'</span>
<a name="line-113"></a>
<a name="line-114"></a><a name="strictEncode"></a><span class='hs-comment'>-- | Throw a 'UnicodeException' if encoding fails.</span>
<a name="line-115"></a><span class='hs-comment'>{-# DEPRECATED strictEncode "This function always throws an exception, and will be removed." #-}</span>
<a name="line-116"></a><span class='hs-definition'>strictEncode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OnEncodeError</span>
<a name="line-117"></a><span class='hs-definition'>strictEncode</span> <span class='hs-varid'>desc</span> <span class='hs-varid'>c</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>throw</span> <span class='hs-layout'>(</span><span class='hs-conid'>EncodeError</span> <span class='hs-varid'>desc</span> <span class='hs-varid'>c</span><span class='hs-layout'>)</span>
<a name="line-118"></a>
<a name="line-119"></a><a name="ignore"></a><span class='hs-comment'>-- | Ignore an invalid input, substituting nothing in the output.</span>
<a name="line-120"></a><span class='hs-definition'>ignore</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>OnError</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span>
<a name="line-121"></a><span class='hs-definition'>ignore</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Nothing</span>
<a name="line-122"></a>
<a name="line-123"></a><a name="replace"></a><span class='hs-comment'>-- | Replace an invalid input with a valid output.</span>
<a name="line-124"></a><span class='hs-definition'>replace</span> <span class='hs-keyglyph'>::</span> <span class='hs-varid'>b</span> <span class='hs-keyglyph'>-></span> <span class='hs-conid'>OnError</span> <span class='hs-varid'>a</span> <span class='hs-varid'>b</span>
<a name="line-125"></a><span class='hs-definition'>replace</span> <span class='hs-varid'>c</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Just</span> <span class='hs-varid'>c</span>
</pre></body>
</html>
|