This file is indexed.

/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__ &gt;= 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__ &gt;= 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'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</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'>-&gt;</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'>-&gt;</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>