assets/classDiagram

Summary

Maintainability
Test Coverage
classDiagram
LNumber <|-- LBigInteger
LNumber <|-- LRational
LNumber <|-- LFloat
LNumber <|-- LComplex

InputPort <|-- InputStringPort
InputStringPort <|-- InputFilePort
OutputPort <|-- OutputStringPort
OutputPort <|-- OutputFilePort
OutputPort <|-- OutputByteVectorPort
InputPort <|-- InputByteVectorPort
InputByteVectorPort <|-- InputBinaryFilePort
OutputFilePort <|-- OutputBinaryFilePort

Parser *-- Lexer
Macro <|-- Syntax

String <|-- LString

Formatter *-- Ahead
Formatter *-- Pattern

Interpreter *-- Environment

class LRational {
  LNumber __num__
  LNumber __denom__
  pow()
  abs()
  cmp()
  mul()
  div()
  sub()
  add()
  valueOf()
  toString()
}

class LBigInteger {
  BigInt __value__
  sqrt()
  gcd()
  sqrt()
}

class LFloat {
  Number __value__
  toRational()
  toString()
}

class LNumber {
  Number __value__
  isFloat()
  isNumber()
  isComplex()
  isRational()
  isNative()
  isBigInteger()
  isBN()
  getType()
  coerce()
  op()
  sqrt()
  pow()
  abs()
  isOdd()
  isEven()
  cmp()
}

class LComplex {
  LNumber __im__
  LNumber __re__
  sqrt()
  toRational()
  add()
  factor()
  modulus()
  sqrt()
  div()
  sub()
  mul()
  cmp()
  toString()
}

class InputPort {
  Parser __parser__
  read_char()
  skip_char()
  read_line()
  read()
  char_ready()
  is_open()
  close()
  toString()
}

class OutputPort {
  symbol __type__
  write()
  is_open()
  close()
  toString()
}

class OutputStringPort {
  string[] __buffer__
  symbol __type__
  write()
  valueOf()
  toString()
}

class InputBinaryFilePort {
  string __filename__
  toString()
}

class InputStringPort {
  symbol __type__
  char_ready()
  toString()
}

class InputFilePort {
  string __filename__
  toStgring()
}

class OutputFilePort {
  string __filename__
  symbol __type__
  fs()
  internal()
  close()
  toString()
}

class InputByteVectorPort {
  symbol __type__
  Uint8Array __vector__
  integer __index__
  toString()
  u8_ready()
  peek_u8()
  skip()
  read_u8()
  read_u8_vector(integer)
}

class OutputByteVectorPort {
  Uin8Array __buffer__
  symbol __type__
  write(any)
  close()
  write_u8(byte)
  write_u8_vector(Uint8Array)
  toString()
  valueOf()
}

class InputByteVectorPort {
  string __filename__
  toString()
}

class OutputBinaryFilePort {
  string __filename__
  symbol __type__
  write(any)
  write_u8(byte)
  write_u8_vector(Uint8Array)
}

class Formatter {
  string __code__
  indent(object): number
  exception_shift(token, object): number
  break(): Formatter
  format(): string
}

class Pattern {
  rule pattern
  string flag
}

class LString {
  string __string__
  number length
  toString(): string
  get(number): string
  cmp(string): boolean
  lower(): LString
  upper(): LString
  set(number, LCharacter)
  clone(): LString
  fill(LCharacter)
}

class Worker {
  string url
  Worker worker
  rpc(method, params): Promise
  exec(code, [dynamic]): Promise
}

class LCharacter {
  string __name__
  string __char__
  toUpperCase(): LCharacter
  toLowerCase(): LCharacter
  toString(): string
  valueOf(): string
}

class Lexer {
  string __input__
  token(meta)
  peek(meta)
  skip()
  read_line()
  read_rest()
  read_string(num)
  peek_char()
  read_char()
  skip_char()
  match_rule()
  next_token()
  static rules
}

class Parser {
  Lexer __lexer__
  Environment __env__
  resolve()
  peek()
  skip()
  read()
  is_special(token)
  is_builtin(token)
  is_open(token)
  is_close(token)
  read_list()
  read_value()
  read_object()
  is_ccomment(token)
  evaluate(code)
}

class LSymbol {
  string __name__
}

class Environment {
  string __name__
  Map __docs__
  Object __env__
  Environment __parent__
  list(): string[]
  uset(name)
  inherit(name, object): Environment
  doc(name, value = null)
  get(symbol, options)
  set(symbol, value, doc = null)
  constant(name, value)
  has(string): boolean
  ref(string): Environment
  parents(): Environment[]
  newFrame(Function, args)
  clone(): Environment
  merge(): Environment
  toString(): string
}

class Values {
  any[] __values__
  valueOf()
  toString()
}

class Macro {
  string __doc__
  string __name__
  boolean __defmacro__
  Function __fn__
  defmacro()
  invoke()
  toString()
}

class Syntax {
  invoke()
  toString()
}

class QuotedPromise {
  Promise __promise__
  then()
  catch()
  valueOf()
}

class Pair {
  any car
  any cdr
  flatten()
  length()
  find(any)
  clone()
  last_pair()
  to_array()
  to_object()
  reduce(Function)
  reverse(): Pair
  transform(Function)
  map(Function)
}

class Interpreter {
  Environment __env__
  get(symbol)
  set(symbol, value)
  constant(name, value)
  exec(code, dynamic = false, env = null)
}