gemini-browser

A text-based gemini browser
git clone git://git.laack.co/gemini-browser.git
Log | Files | Refs | README

ebcdic.go (5211B)


      1 // Copyright 2015 Garrett D'Amore
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use file except in compliance with the License.
      5 // You may obtain a copy of the license at
      6 //
      7 //    http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 package encoding
     16 
     17 import (
     18 	"golang.org/x/text/encoding"
     19 )
     20 
     21 // EBCDIC represents the 8-bit EBCDIC scheme, found in some mainframe
     22 // environments.  If you don't know what this is, consider yourself lucky.
     23 var EBCDIC encoding.Encoding
     24 
     25 func init() {
     26 	cm := &Charmap{
     27 		ReplacementChar: '\x3f',
     28 		Map: map[byte]rune{
     29 			// 0x00-0x03 match
     30 			0x04: RuneError,
     31 			0x05: '\t',
     32 			0x06: RuneError,
     33 			0x07: '\x7f',
     34 			0x08: RuneError,
     35 			0x09: RuneError,
     36 			0x0a: RuneError,
     37 			// 0x0b-0x13 match
     38 			0x14: RuneError,
     39 			0x15: '\x85', // Not in any ISO code
     40 			0x16: '\x08',
     41 			0x17: RuneError,
     42 			// 0x18-0x19 match
     43 			0x1a: RuneError,
     44 			0x1b: RuneError,
     45 			// 0x1c-0x1f match
     46 			0x20: RuneError,
     47 			0x21: RuneError,
     48 			0x22: RuneError,
     49 			0x23: RuneError,
     50 			0x24: RuneError,
     51 			0x25: '\n',
     52 			0x26: '\x17',
     53 			0x27: '\x1b',
     54 			0x28: RuneError,
     55 			0x29: RuneError,
     56 			0x2a: RuneError,
     57 			0x2b: RuneError,
     58 			0x2c: RuneError,
     59 			0x2d: '\x05',
     60 			0x2e: '\x06',
     61 			0x2f: '\x07',
     62 			0x30: RuneError,
     63 			0x31: RuneError,
     64 			0x32: '\x16',
     65 			0x33: RuneError,
     66 			0x34: RuneError,
     67 			0x35: RuneError,
     68 			0x36: RuneError,
     69 			0x37: '\x04',
     70 			0x38: RuneError,
     71 			0x39: RuneError,
     72 			0x3a: RuneError,
     73 			0x3b: RuneError,
     74 			0x3c: '\x14',
     75 			0x3d: '\x15',
     76 			0x3e: RuneError,
     77 			0x3f: '\x1a', // also replacement char
     78 			0x40: ' ',
     79 			0x41: '\xa0',
     80 			0x42: RuneError,
     81 			0x43: RuneError,
     82 			0x44: RuneError,
     83 			0x45: RuneError,
     84 			0x46: RuneError,
     85 			0x47: RuneError,
     86 			0x48: RuneError,
     87 			0x49: RuneError,
     88 			0x4a: RuneError,
     89 			0x4b: '.',
     90 			0x4c: '<',
     91 			0x4d: '(',
     92 			0x4e: '+',
     93 			0x4f: '|',
     94 			0x50: '&',
     95 			0x51: RuneError,
     96 			0x52: RuneError,
     97 			0x53: RuneError,
     98 			0x54: RuneError,
     99 			0x55: RuneError,
    100 			0x56: RuneError,
    101 			0x57: RuneError,
    102 			0x58: RuneError,
    103 			0x59: RuneError,
    104 			0x5a: '!',
    105 			0x5b: '$',
    106 			0x5c: '*',
    107 			0x5d: ')',
    108 			0x5e: ';',
    109 			0x5f: '¬',
    110 			0x60: '-',
    111 			0x61: '/',
    112 			0x62: RuneError,
    113 			0x63: RuneError,
    114 			0x64: RuneError,
    115 			0x65: RuneError,
    116 			0x66: RuneError,
    117 			0x67: RuneError,
    118 			0x68: RuneError,
    119 			0x69: RuneError,
    120 			0x6a: '¦',
    121 			0x6b: ',',
    122 			0x6c: '%',
    123 			0x6d: '_',
    124 			0x6e: '>',
    125 			0x6f: '?',
    126 			0x70: RuneError,
    127 			0x71: RuneError,
    128 			0x72: RuneError,
    129 			0x73: RuneError,
    130 			0x74: RuneError,
    131 			0x75: RuneError,
    132 			0x76: RuneError,
    133 			0x77: RuneError,
    134 			0x78: RuneError,
    135 			0x79: '`',
    136 			0x7a: ':',
    137 			0x7b: '#',
    138 			0x7c: '@',
    139 			0x7d: '\'',
    140 			0x7e: '=',
    141 			0x7f: '"',
    142 			0x80: RuneError,
    143 			0x81: 'a',
    144 			0x82: 'b',
    145 			0x83: 'c',
    146 			0x84: 'd',
    147 			0x85: 'e',
    148 			0x86: 'f',
    149 			0x87: 'g',
    150 			0x88: 'h',
    151 			0x89: 'i',
    152 			0x8a: RuneError,
    153 			0x8b: RuneError,
    154 			0x8c: RuneError,
    155 			0x8d: RuneError,
    156 			0x8e: RuneError,
    157 			0x8f: '±',
    158 			0x90: RuneError,
    159 			0x91: 'j',
    160 			0x92: 'k',
    161 			0x93: 'l',
    162 			0x94: 'm',
    163 			0x95: 'n',
    164 			0x96: 'o',
    165 			0x97: 'p',
    166 			0x98: 'q',
    167 			0x99: 'r',
    168 			0x9a: RuneError,
    169 			0x9b: RuneError,
    170 			0x9c: RuneError,
    171 			0x9d: RuneError,
    172 			0x9e: RuneError,
    173 			0x9f: RuneError,
    174 			0xa0: RuneError,
    175 			0xa1: '~',
    176 			0xa2: 's',
    177 			0xa3: 't',
    178 			0xa4: 'u',
    179 			0xa5: 'v',
    180 			0xa6: 'w',
    181 			0xa7: 'x',
    182 			0xa8: 'y',
    183 			0xa9: 'z',
    184 			0xaa: RuneError,
    185 			0xab: RuneError,
    186 			0xac: RuneError,
    187 			0xad: RuneError,
    188 			0xae: RuneError,
    189 			0xaf: RuneError,
    190 			0xb0: '^',
    191 			0xb1: RuneError,
    192 			0xb2: RuneError,
    193 			0xb3: RuneError,
    194 			0xb4: RuneError,
    195 			0xb5: RuneError,
    196 			0xb6: RuneError,
    197 			0xb7: RuneError,
    198 			0xb8: RuneError,
    199 			0xb9: RuneError,
    200 			0xba: '[',
    201 			0xbb: ']',
    202 			0xbc: RuneError,
    203 			0xbd: RuneError,
    204 			0xbe: RuneError,
    205 			0xbf: RuneError,
    206 			0xc0: '{',
    207 			0xc1: 'A',
    208 			0xc2: 'B',
    209 			0xc3: 'C',
    210 			0xc4: 'D',
    211 			0xc5: 'E',
    212 			0xc6: 'F',
    213 			0xc7: 'G',
    214 			0xc8: 'H',
    215 			0xc9: 'I',
    216 			0xca: '\xad', // NB: soft hyphen
    217 			0xcb: RuneError,
    218 			0xcc: RuneError,
    219 			0xcd: RuneError,
    220 			0xce: RuneError,
    221 			0xcf: RuneError,
    222 			0xd0: '}',
    223 			0xd1: 'J',
    224 			0xd2: 'K',
    225 			0xd3: 'L',
    226 			0xd4: 'M',
    227 			0xd5: 'N',
    228 			0xd6: 'O',
    229 			0xd7: 'P',
    230 			0xd8: 'Q',
    231 			0xd9: 'R',
    232 			0xda: RuneError,
    233 			0xdb: RuneError,
    234 			0xdc: RuneError,
    235 			0xdd: RuneError,
    236 			0xde: RuneError,
    237 			0xdf: RuneError,
    238 			0xe0: '\\',
    239 			0xe1: '\u2007', // Non-breaking space
    240 			0xe2: 'S',
    241 			0xe3: 'T',
    242 			0xe4: 'U',
    243 			0xe5: 'V',
    244 			0xe6: 'W',
    245 			0xe7: 'X',
    246 			0xe8: 'Y',
    247 			0xe9: 'Z',
    248 			0xea: RuneError,
    249 			0xeb: RuneError,
    250 			0xec: RuneError,
    251 			0xed: RuneError,
    252 			0xee: RuneError,
    253 			0xef: RuneError,
    254 			0xf0: '0',
    255 			0xf1: '1',
    256 			0xf2: '2',
    257 			0xf3: '3',
    258 			0xf4: '4',
    259 			0xf5: '5',
    260 			0xf6: '6',
    261 			0xf7: '7',
    262 			0xf8: '8',
    263 			0xf9: '9',
    264 			0xfa: RuneError,
    265 			0xfb: RuneError,
    266 			0xfc: RuneError,
    267 			0xfd: RuneError,
    268 			0xfe: RuneError,
    269 			0xff: RuneError,
    270 		}}
    271 	cm.Init()
    272 	EBCDIC = cm
    273 }