src/Tools/VSCode/extension/src/isabelle_encoding.ts
author wenzelm
Wed, 09 Mar 2022 16:21:14 +0100
changeset 75252 41dfe941c3da
parent 75248 b57efe7fe1d3
permissions -rw-r--r--
inline Isabelle symbols into source text, so that "isabelle vscode" can start up properly without access to process.env or fs;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
     1
/*  Author:     Makarius
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
     2
75246
f32e5d4cf1a3 patch for vscode encoding "UTF-8-Isabelle": clone of "utf8", no symbols yet;
wenzelm
parents: 75245
diff changeset
     3
UTF-8-Isabelle symbol encoding: for use inside VSCode.
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
     4
*/
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
     5
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
     6
'use strict';
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
     7
75245
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
     8
import { TextEncoder, TextDecoder } from 'util'   // VSCODE: REMOVE
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
     9
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    10
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    11
/* defined symbols */
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    12
75245
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    13
export interface Symbol_Entry {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    14
  symbol: string;
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    15
  name: string;
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    16
  code: number;
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    17
  abbrevs: string[];
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    18
}
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    19
75252
41dfe941c3da inline Isabelle symbols into source text, so that "isabelle vscode" can start up properly without access to process.env or fs;
wenzelm
parents: 75248
diff changeset
    20
export const static_symbols: Symbol_Entry[] = [/*symbols*/];
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    21
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    22
export const symbols_decode: Map<string, string> =
75252
41dfe941c3da inline Isabelle symbols into source text, so that "isabelle vscode" can start up properly without access to process.env or fs;
wenzelm
parents: 75248
diff changeset
    23
  new Map(static_symbols.map((s: Symbol_Entry) => [s.symbol, String.fromCharCode(s.code)]));
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    24
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    25
export const symbols_encode: Map<string, string> =
75252
41dfe941c3da inline Isabelle symbols into source text, so that "isabelle vscode" can start up properly without access to process.env or fs;
wenzelm
parents: 75248
diff changeset
    26
  new Map(static_symbols.map((s: Symbol_Entry) => [String.fromCharCode(s.code), s.symbol]));
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    27
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    28
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    29
/* encoding */
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    30
75246
f32e5d4cf1a3 patch for vscode encoding "UTF-8-Isabelle": clone of "utf8", no symbols yet;
wenzelm
parents: 75245
diff changeset
    31
export const ENCODING = 'utf8isabelle';
f32e5d4cf1a3 patch for vscode encoding "UTF-8-Isabelle": clone of "utf8", no symbols yet;
wenzelm
parents: 75245
diff changeset
    32
export const LABEL = 'UTF-8-Isabelle';
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    33
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    34
export interface Options {
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    35
  stripBOM?: boolean;
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    36
  addBOM?: boolean;
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    37
  defaultEncoding?: string;
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    38
}
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    39
75245
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    40
export interface IEncoderStream {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    41
  write(input: string): Uint8Array;
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    42
  end(): Uint8Array | undefined;
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    43
}
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    44
75245
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    45
export interface IDecoderStream {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    46
  write(input: Uint8Array): string;
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    47
  end(): string | undefined;
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    48
}
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    49
75246
f32e5d4cf1a3 patch for vscode encoding "UTF-8-Isabelle": clone of "utf8", no symbols yet;
wenzelm
parents: 75245
diff changeset
    50
export function getEncoder(): IEncoderStream {
75245
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    51
  const utf8_encoder = new TextEncoder();
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    52
  return {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    53
    write(input: string): Uint8Array {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    54
      return utf8_encoder.encode(input);
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    55
    },
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    56
    end(): Uint8Array | undefined {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    57
      return utf8_encoder.encode();
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    58
    }
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    59
  };
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    60
}
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    61
75246
f32e5d4cf1a3 patch for vscode encoding "UTF-8-Isabelle": clone of "utf8", no symbols yet;
wenzelm
parents: 75245
diff changeset
    62
export function getDecoder(): IDecoderStream {
75245
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    63
  const utf8TextDecoder = new TextDecoder();
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    64
  return {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    65
    write(input: Uint8Array): string {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    66
      return utf8TextDecoder.decode(input, { stream: true });
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    67
    },
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    68
    end(): string | undefined {
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    69
      return utf8TextDecoder.decode();
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    70
    }
0fc0ed9a3ad7 fit into vscode source conventions;
wenzelm
parents: 75240
diff changeset
    71
  };
75240
83197a0ac6df towards UTF-8-Isabelle symbol encoding;
wenzelm
parents:
diff changeset
    72
}