Module: Toon

Defined in:
lib/toon.rb,
lib/toon/writer.rb,
lib/toon/version.rb,
lib/toon/encoders.rb,
lib/toon/constants.rb,
lib/toon/normalizer.rb,
lib/toon/primitives.rb

Defined Under Namespace

Modules: Encoders, Normalizer, Primitives

Constant Summary collapse

VERSION =
'0.1.1'
LIST_ITEM_MARKER =

List markers

'-'
LIST_ITEM_PREFIX =
'- '
COMMA =

Structural characters

','
COLON =
':'
SPACE =
' '
PIPE =
'|'
OPEN_BRACKET =

Brackets and braces

'['
CLOSE_BRACKET =
']'
OPEN_BRACE =
'{'
CLOSE_BRACE =
'}'
NULL_LITERAL =

Literals

'null'
TRUE_LITERAL =
'true'
FALSE_LITERAL =
'false'
BACKSLASH =

Escape characters

'\\'
DOUBLE_QUOTE =
'"'
NEWLINE =
"\n"
CARRIAGE_RETURN =
"\r"
TAB =
"\t"
DELIMITERS =

Delimiters

{
  comma: COMMA,
  tab: TAB,
  pipe: PIPE
}.freeze
DEFAULT_DELIMITER =
DELIMITERS[:comma]

Class Method Summary collapse

Class Method Details

.encode(input, indent: 2, delimiter: DEFAULT_DELIMITER, length_marker: false) ⇒ String

Encode any value to TOON format

Parameters:

  • input (Object)

    Any value to encode

  • indent (Integer) (defaults to: 2)

    Number of spaces per indentation level (default: 2)

  • delimiter (String) (defaults to: DEFAULT_DELIMITER)

    Delimiter for array values and tabular rows (default: ‘,’)

  • length_marker (String, false) (defaults to: false)

    Optional marker to prefix array lengths (default: false)

Returns:

  • (String)

    TOON-formatted string



20
21
22
23
24
# File 'lib/toon.rb', line 20

def encode(input, indent: 2, delimiter: DEFAULT_DELIMITER, length_marker: false)
  normalized_value = Normalizer.normalize_value(input)
  options = resolve_options(indent: indent, delimiter: delimiter, length_marker: length_marker)
  Encoders.encode_value(normalized_value, options)
end

.resolve_options(indent:, delimiter:, length_marker:) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/toon.rb', line 26

def resolve_options(indent:, delimiter:, length_marker:)
  {
    indent: indent,
    delimiter: delimiter,
    length_marker: length_marker
  }
end