mirror of
				https://github.com/taigrr/wtf
				synced 2025-01-18 04:03:14 -08:00 
			
		
		
		
	
		
			
				
	
	
		
			274 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			274 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2015 Garrett D'Amore
 | 
						|
//
 | 
						|
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
// you may not use file except in compliance with the License.
 | 
						|
// You may obtain a copy of the license at
 | 
						|
//
 | 
						|
//    http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, software
 | 
						|
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
// See the License for the specific language governing permissions and
 | 
						|
// limitations under the License.
 | 
						|
 | 
						|
package encoding
 | 
						|
 | 
						|
import (
 | 
						|
	"golang.org/x/text/encoding"
 | 
						|
)
 | 
						|
 | 
						|
// EBCDIC represents the 8-bit EBCDIC scheme, found in some mainframe
 | 
						|
// environments.  If you don't know what this is, consider yourself lucky.
 | 
						|
var EBCDIC encoding.Encoding
 | 
						|
 | 
						|
func init() {
 | 
						|
	cm := &Charmap{
 | 
						|
		ReplacementChar: '\x3f',
 | 
						|
		Map: map[byte]rune{
 | 
						|
			// 0x00-0x03 match
 | 
						|
			0x04: RuneError,
 | 
						|
			0x05: '\t',
 | 
						|
			0x06: RuneError,
 | 
						|
			0x07: '\x7f',
 | 
						|
			0x08: RuneError,
 | 
						|
			0x09: RuneError,
 | 
						|
			0x0a: RuneError,
 | 
						|
			// 0x0b-0x13 match
 | 
						|
			0x14: RuneError,
 | 
						|
			0x15: '\x85', // Not in any ISO code
 | 
						|
			0x16: '\x08',
 | 
						|
			0x17: RuneError,
 | 
						|
			// 0x18-0x19 match
 | 
						|
			0x1a: RuneError,
 | 
						|
			0x1b: RuneError,
 | 
						|
			// 0x1c-0x1f match
 | 
						|
			0x20: RuneError,
 | 
						|
			0x21: RuneError,
 | 
						|
			0x22: RuneError,
 | 
						|
			0x23: RuneError,
 | 
						|
			0x24: RuneError,
 | 
						|
			0x25: '\n',
 | 
						|
			0x26: '\x17',
 | 
						|
			0x27: '\x1b',
 | 
						|
			0x28: RuneError,
 | 
						|
			0x29: RuneError,
 | 
						|
			0x2a: RuneError,
 | 
						|
			0x2b: RuneError,
 | 
						|
			0x2c: RuneError,
 | 
						|
			0x2d: '\x05',
 | 
						|
			0x2e: '\x06',
 | 
						|
			0x2f: '\x07',
 | 
						|
			0x30: RuneError,
 | 
						|
			0x31: RuneError,
 | 
						|
			0x32: '\x16',
 | 
						|
			0x33: RuneError,
 | 
						|
			0x34: RuneError,
 | 
						|
			0x35: RuneError,
 | 
						|
			0x36: RuneError,
 | 
						|
			0x37: '\x04',
 | 
						|
			0x38: RuneError,
 | 
						|
			0x39: RuneError,
 | 
						|
			0x3a: RuneError,
 | 
						|
			0x3b: RuneError,
 | 
						|
			0x3c: '\x14',
 | 
						|
			0x3d: '\x15',
 | 
						|
			0x3e: RuneError,
 | 
						|
			0x3f: '\x1a', // also replacement char
 | 
						|
			0x40: ' ',
 | 
						|
			0x41: '\xa0',
 | 
						|
			0x42: RuneError,
 | 
						|
			0x43: RuneError,
 | 
						|
			0x44: RuneError,
 | 
						|
			0x45: RuneError,
 | 
						|
			0x46: RuneError,
 | 
						|
			0x47: RuneError,
 | 
						|
			0x48: RuneError,
 | 
						|
			0x49: RuneError,
 | 
						|
			0x4a: RuneError,
 | 
						|
			0x4b: '.',
 | 
						|
			0x4c: '<',
 | 
						|
			0x4d: '(',
 | 
						|
			0x4e: '+',
 | 
						|
			0x4f: '|',
 | 
						|
			0x50: '&',
 | 
						|
			0x51: RuneError,
 | 
						|
			0x52: RuneError,
 | 
						|
			0x53: RuneError,
 | 
						|
			0x54: RuneError,
 | 
						|
			0x55: RuneError,
 | 
						|
			0x56: RuneError,
 | 
						|
			0x57: RuneError,
 | 
						|
			0x58: RuneError,
 | 
						|
			0x59: RuneError,
 | 
						|
			0x5a: '!',
 | 
						|
			0x5b: '$',
 | 
						|
			0x5c: '*',
 | 
						|
			0x5d: ')',
 | 
						|
			0x5e: ';',
 | 
						|
			0x5f: '¬',
 | 
						|
			0x60: '-',
 | 
						|
			0x61: '/',
 | 
						|
			0x62: RuneError,
 | 
						|
			0x63: RuneError,
 | 
						|
			0x64: RuneError,
 | 
						|
			0x65: RuneError,
 | 
						|
			0x66: RuneError,
 | 
						|
			0x67: RuneError,
 | 
						|
			0x68: RuneError,
 | 
						|
			0x69: RuneError,
 | 
						|
			0x6a: '¦',
 | 
						|
			0x6b: ',',
 | 
						|
			0x6c: '%',
 | 
						|
			0x6d: '_',
 | 
						|
			0x6e: '>',
 | 
						|
			0x6f: '?',
 | 
						|
			0x70: RuneError,
 | 
						|
			0x71: RuneError,
 | 
						|
			0x72: RuneError,
 | 
						|
			0x73: RuneError,
 | 
						|
			0x74: RuneError,
 | 
						|
			0x75: RuneError,
 | 
						|
			0x76: RuneError,
 | 
						|
			0x77: RuneError,
 | 
						|
			0x78: RuneError,
 | 
						|
			0x79: '`',
 | 
						|
			0x7a: ':',
 | 
						|
			0x7b: '#',
 | 
						|
			0x7c: '@',
 | 
						|
			0x7d: '\'',
 | 
						|
			0x7e: '=',
 | 
						|
			0x7f: '"',
 | 
						|
			0x80: RuneError,
 | 
						|
			0x81: 'a',
 | 
						|
			0x82: 'b',
 | 
						|
			0x83: 'c',
 | 
						|
			0x84: 'd',
 | 
						|
			0x85: 'e',
 | 
						|
			0x86: 'f',
 | 
						|
			0x87: 'g',
 | 
						|
			0x88: 'h',
 | 
						|
			0x89: 'i',
 | 
						|
			0x8a: RuneError,
 | 
						|
			0x8b: RuneError,
 | 
						|
			0x8c: RuneError,
 | 
						|
			0x8d: RuneError,
 | 
						|
			0x8e: RuneError,
 | 
						|
			0x8f: '±',
 | 
						|
			0x90: RuneError,
 | 
						|
			0x91: 'j',
 | 
						|
			0x92: 'k',
 | 
						|
			0x93: 'l',
 | 
						|
			0x94: 'm',
 | 
						|
			0x95: 'n',
 | 
						|
			0x96: 'o',
 | 
						|
			0x97: 'p',
 | 
						|
			0x98: 'q',
 | 
						|
			0x99: 'r',
 | 
						|
			0x9a: RuneError,
 | 
						|
			0x9b: RuneError,
 | 
						|
			0x9c: RuneError,
 | 
						|
			0x9d: RuneError,
 | 
						|
			0x9e: RuneError,
 | 
						|
			0x9f: RuneError,
 | 
						|
			0xa0: RuneError,
 | 
						|
			0xa1: '~',
 | 
						|
			0xa2: 's',
 | 
						|
			0xa3: 't',
 | 
						|
			0xa4: 'u',
 | 
						|
			0xa5: 'v',
 | 
						|
			0xa6: 'w',
 | 
						|
			0xa7: 'x',
 | 
						|
			0xa8: 'y',
 | 
						|
			0xa9: 'z',
 | 
						|
			0xaa: RuneError,
 | 
						|
			0xab: RuneError,
 | 
						|
			0xac: RuneError,
 | 
						|
			0xad: RuneError,
 | 
						|
			0xae: RuneError,
 | 
						|
			0xaf: RuneError,
 | 
						|
			0xb0: '^',
 | 
						|
			0xb1: RuneError,
 | 
						|
			0xb2: RuneError,
 | 
						|
			0xb3: RuneError,
 | 
						|
			0xb4: RuneError,
 | 
						|
			0xb5: RuneError,
 | 
						|
			0xb6: RuneError,
 | 
						|
			0xb7: RuneError,
 | 
						|
			0xb8: RuneError,
 | 
						|
			0xb9: RuneError,
 | 
						|
			0xba: '[',
 | 
						|
			0xbb: ']',
 | 
						|
			0xbc: RuneError,
 | 
						|
			0xbd: RuneError,
 | 
						|
			0xbe: RuneError,
 | 
						|
			0xbf: RuneError,
 | 
						|
			0xc0: '{',
 | 
						|
			0xc1: 'A',
 | 
						|
			0xc2: 'B',
 | 
						|
			0xc3: 'C',
 | 
						|
			0xc4: 'D',
 | 
						|
			0xc5: 'E',
 | 
						|
			0xc6: 'F',
 | 
						|
			0xc7: 'G',
 | 
						|
			0xc8: 'H',
 | 
						|
			0xc9: 'I',
 | 
						|
			0xca: '\xad', // NB: soft hyphen
 | 
						|
			0xcb: RuneError,
 | 
						|
			0xcc: RuneError,
 | 
						|
			0xcd: RuneError,
 | 
						|
			0xce: RuneError,
 | 
						|
			0xcf: RuneError,
 | 
						|
			0xd0: '}',
 | 
						|
			0xd1: 'J',
 | 
						|
			0xd2: 'K',
 | 
						|
			0xd3: 'L',
 | 
						|
			0xd4: 'M',
 | 
						|
			0xd5: 'N',
 | 
						|
			0xd6: 'O',
 | 
						|
			0xd7: 'P',
 | 
						|
			0xd8: 'Q',
 | 
						|
			0xd9: 'R',
 | 
						|
			0xda: RuneError,
 | 
						|
			0xdb: RuneError,
 | 
						|
			0xdc: RuneError,
 | 
						|
			0xdd: RuneError,
 | 
						|
			0xde: RuneError,
 | 
						|
			0xdf: RuneError,
 | 
						|
			0xe0: '\\',
 | 
						|
			0xe1: '\u2007', // Non-breaking space
 | 
						|
			0xe2: 'S',
 | 
						|
			0xe3: 'T',
 | 
						|
			0xe4: 'U',
 | 
						|
			0xe5: 'V',
 | 
						|
			0xe6: 'W',
 | 
						|
			0xe7: 'X',
 | 
						|
			0xe8: 'Y',
 | 
						|
			0xe9: 'Z',
 | 
						|
			0xea: RuneError,
 | 
						|
			0xeb: RuneError,
 | 
						|
			0xec: RuneError,
 | 
						|
			0xed: RuneError,
 | 
						|
			0xee: RuneError,
 | 
						|
			0xef: RuneError,
 | 
						|
			0xf0: '0',
 | 
						|
			0xf1: '1',
 | 
						|
			0xf2: '2',
 | 
						|
			0xf3: '3',
 | 
						|
			0xf4: '4',
 | 
						|
			0xf5: '5',
 | 
						|
			0xf6: '6',
 | 
						|
			0xf7: '7',
 | 
						|
			0xf8: '8',
 | 
						|
			0xf9: '9',
 | 
						|
			0xfa: RuneError,
 | 
						|
			0xfb: RuneError,
 | 
						|
			0xfc: RuneError,
 | 
						|
			0xfd: RuneError,
 | 
						|
			0xfe: RuneError,
 | 
						|
			0xff: RuneError,
 | 
						|
		}}
 | 
						|
	cm.Init()
 | 
						|
	EBCDIC = cm
 | 
						|
}
 |