Liking cljdoc? Tell your friends :D

com.vadelabs.toon.decode.parser

Token parsing functions for TOON format.

Parses array headers, delimited values, primitive tokens, and keys.

Token parsing functions for TOON format.

Parses array headers, delimited values, primitive tokens, and keys.
raw docstring

array-header-lineclj/s

(array-header-line line)

Parses an array header line.

Format: key?[#?N<delim?>]{fields}?: inline-values?

Parameters:

  • line: Header line string

Returns: Map with {:key, :length, :delimiter, :fields, :inline-values}

Example: (parse-array-header-line "[3]:") => {:length 3 :delimiter ","}

(parse-array-header-line "items[2]{id,name}:") => {:key "items" :length 2 :delimiter "," :fields ["id" "name"] ...}

(parse-array-header-line "[3]: a,b,c") => {:length 3 :delimiter "," :inline-values "a,b,c" ...}

Parses an array header line.

Format: key?[#?N<delim?>]{fields}?: inline-values?

Parameters:
  - line: Header line string

Returns:
  Map with {:key, :length, :delimiter, :fields, :inline-values}

Example:
  (parse-array-header-line "[3]:")
  => {:length 3 :delimiter ","}

  (parse-array-header-line "items[2]{id,name}:")
  => {:key "items" :length 2 :delimiter "," :fields ["id" "name"] ...}

  (parse-array-header-line "[3]: a,b,c")
  => {:length 3 :delimiter "," :inline-values "a,b,c" ...}
sourceraw docstring

bracket-segmentclj/s

(bracket-segment bracket-content)

Parses bracket segment to extract length and delimiter.

Format: [N<delim?>]

  • Required N (numeric length)
  • Optional delimiter (tab or pipe char in brackets)

Parameters:

  • bracket-content: Content inside brackets (without [ ])

Returns: Map with {:length, :delimiter}

Example: (parse-bracket-segment "3") => {:length 3 :delimiter ","} (parse-bracket-segment "3|") => {:length 3 :delimiter "|"} (parse-bracket-segment "3\t") => {:length 3 :delimiter "\t"}

Parses bracket segment to extract length and delimiter.

Format: [N<delim?>]
  - Required N (numeric length)
  - Optional delimiter (tab or pipe char in brackets)

Parameters:
  - bracket-content: Content inside brackets (without [ ])

Returns:
  Map with {:length, :delimiter}

Example:
  (parse-bracket-segment "3") => {:length 3 :delimiter ","}
  (parse-bracket-segment "3|") => {:length 3 :delimiter "|"}
  (parse-bracket-segment "3\t") => {:length 3 :delimiter "\t"}
sourceraw docstring

delimited-valuesclj/s

(delimited-values input)
(delimited-values input delimiter)

Splits a string by delimiter, respecting quoted sections.

Parameters:

  • input: String to split
  • delimiter: Delimiter character (default ",")

Returns: Vector of trimmed token strings

Example: (parse-delimited-values "a,b,"c,d",e" ",") => ["a" "b" ""c,d"" "e"]

Splits a string by delimiter, respecting quoted sections.

Parameters:
  - input: String to split
  - delimiter: Delimiter character (default ",")

Returns:
  Vector of trimmed token strings

Example:
  (parse-delimited-values "a,b,\"c,d\",e" ",")
  => ["a" "b" "\"c,d\"" "e"]
sourceraw docstring

key-tokenclj/s

(key-token key-str)

Parses a key token (before colon).

Handles quoted and unquoted keys.

Parameters:

  • key-str: Key string (may include trailing colon)

Returns: Map with {:key "parsed-key" :was-quoted boolean}

Example: (parse-key-token "name") => {:key "name" :was-quoted false} (parse-key-token ""user name"") => {:key "user name" :was-quoted true}

Parses a key token (before colon).

Handles quoted and unquoted keys.

Parameters:
  - key-str: Key string (may include trailing colon)

Returns:
  Map with {:key "parsed-key" :was-quoted boolean}

Example:
  (parse-key-token "name") => {:key "name" :was-quoted false}
  (parse-key-token "\"user name\"") => {:key "user name" :was-quoted true}
sourceraw docstring

numberclj/s

(number s)

Parses a numeric string to a number.

Parameters:

  • s: String to parse

Returns: Number (double) or nil if not a valid number

Note: Normalizes negative zero to positive zero per TOON v1.4 spec

Parses a numeric string to a number.

Parameters:
  - s: String to parse

Returns:
  Number (double) or nil if not a valid number

Note:
  Normalizes negative zero to positive zero per TOON v1.4 spec
sourceraw docstring

primitive-tokenclj/s

(primitive-token token)
(primitive-token token strict)

Parses a primitive token to its value.

Handles:

  • null → nil
  • true → true
  • false → false
  • Numbers → numeric value
  • Quoted strings → unescaped string
  • Unquoted strings → string as-is

Parameters:

  • token: String token to parse
  • strict: Validate escape sequences in strings (default true)

Returns: Parsed value (nil, boolean, number, or string)

Parses a primitive token to its value.

Handles:
  - null → nil
  - true → true
  - false → false
  - Numbers → numeric value
  - Quoted strings → unescaped string
  - Unquoted strings → string as-is

Parameters:
  - token: String token to parse
  - strict: Validate escape sequences in strings (default true)

Returns:
  Parsed value (nil, boolean, number, or string)
sourceraw docstring

string-literalclj/s

(string-literal s)
(string-literal s strict)

Parses a quoted string literal.

Expects string to start with double quote. Finds closing quote and unescapes content.

Parameters:

  • s: String starting with opening quote
  • strict: Validate escape sequences (default true)

Returns: Unescaped string content

Throws: ex-info if no closing quote found or invalid escapes

Parses a quoted string literal.

Expects string to start with double quote.
Finds closing quote and unescapes content.

Parameters:
  - s: String starting with opening quote
  - strict: Validate escape sequences (default true)

Returns:
  Unescaped string content

Throws:
  ex-info if no closing quote found or invalid escapes
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close