ScriptUtils

ceramic.ScriptUtils (Class)

Utilities for converting JavaScript/TypeScript syntax to HScript.

Provides transpilation of common JS/TS idioms to make scripts more familiar to web developers while maintaining HScript compatibility.

Supported conversions:

  • Arrow functions: () => exprfunction() expr
  • Arrow functions: => ->
  • For-of loops: for (x of array)for (x in array)
  • Const declarations: constvar
  • Template literals: `text`"text"
  • Infinite loop protection in while loops

Static Members

script
toHscript(code: String): String

Converts JavaScript/TypeScript-like code to HScript.

Performs multiple transformation passes:

  1. Clean code (arrow functions, comments, template literals)
  2. Convert for-of loops to for-in
  3. Replace const with var
  4. Add infinite loop protection to while loops
Name Type Description
code String Source code with JS/TS syntax
Returns Description
String Equivalent HScript code

Private Members

script
RE_WORD: EReg

Matches word characters at start of string


script
RE_SEP_WORD: EReg

Matches word after non-word character


script
RE_STRING: EReg

Matches string literals (single, double, or template)


script
RE_FOR_OF: EReg

Matches for-of/for-in loop declarations


script
RE_WHILE_START: EReg

Matches while loop start


script
RE_ARROW_FUNC_NO_ARG: EReg

Matches no-argument arrow function


script
cleanCode(code: String): String

First pass: Cleans and converts basic JS/TS syntax.

Handles:

  • Arrow function conversion
  • Comment preservation
  • Template literal conversion
  • Regex literal handling
Name Type Description
code String Raw JS/TS code
Returns Description
String Cleaned code with basic conversions

script
fail(error: Dynamic, i: Int, code: String): Void

Throws a parsing error.

Name Type Description
error Dynamic Error message
i Int Character position where error occurred
code String Full source code