src/Tools/VSCode/extension/src/symbol.ts
author wenzelm
Fri, 09 Jun 2017 17:13:50 +0200
changeset 66052 39eb61b1fa51
child 66060 b2bfbefd354f
permissions -rw-r--r--
provide information about Isabelle symbols within VSCode;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
66052
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     1
'use strict';
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     2
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     3
export type Symbol = string
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     4
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     5
export interface Entry
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     6
{
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     7
  symbol: Symbol,
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     8
  name: string,
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
     9
  code: number
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    10
}
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    11
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    12
let symbol_entries: [Entry]
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    13
const names = new Map<Symbol, string>()
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    14
const codes = new Map<Symbol, number>()
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    15
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    16
export function get_name(sym: Symbol): string | undefined
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    17
{
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    18
  return names.get(sym)
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    19
}
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    20
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    21
export function get_code(sym: Symbol): number | undefined
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    22
{
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    23
  return codes.get(sym)
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    24
}
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    25
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    26
export function get_unicode(sym: Symbol): string
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    27
{
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    28
  const code = get_code(sym)
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    29
  return code ? String.fromCharCode(code) : ""
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    30
}
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    31
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    32
export function update(entries: [Entry])
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    33
{
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    34
  symbol_entries = entries
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    35
  names.clear
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    36
  codes.clear
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    37
  for (const entry of entries) {
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    38
    names.set(entry.symbol, entry.name)
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    39
    codes.set(entry.symbol, entry.code)
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    40
  }
39eb61b1fa51 provide information about Isabelle symbols within VSCode;
wenzelm
parents:
diff changeset
    41
}