10.0.0 • Published 6 months ago

lamos v10.0.0

Weekly downloads
3
License
BlueOak-1.0.0
Repository
github
Last release
6 months ago

LAMOS

Lists and Maps of Strings (LAMOS) is a very simple, plain-text data serialization format.

Syntax

# This is a comment.

# The parser ignores blank lines.
format:
- plain-text
- line-delimited

indentation:
- spaces
- two at a time

structures:
- list item
- key:
    # Comments can also be indented.
    another key: another value
    yet another key: yet another value
  still another key:
  # Comments can go most anywhere.
  - containing a list!
  - of two items!

nesting:
- - - a:
      - x
  - b: y
- z

There is just one datatype: raw, non-empty string. Strings appear in just two structures: sequential lists and key-value maps.

That's it. There are no nulls. There are no booleans. There are no numbers. There are no references, type annotations, or alternative notations for the same structure. There are no empty strings, empty lists, or empty maps.

As a result, LAMOS is far easier to read and to type than JSON, but far easier to construct and parse than YAML.

API

This JavaScript implementation exposes an API like the built-in JSON object:

import { parse, stringify, stableStringify } from 'lamos'
import assert from 'assert'

assert.deepStrictEqual(
  parse(
    [
      'a: x',
      'b: y'
    ].join('\n')
  ),
  { a: 'x', b: 'y' }
)

assert.strictEqual(
  stringify({ a: 'x', b: 'y' }),
  [
    'a: x',
    'b: y'
  ].join('\n')
)

If you plan to hash, sign, or perform other bitwise operations on LAMOS markup, use stableStringify, inspired by json-stable-stringify, to sort map keys in stable order:

assert.equal(
  stableStringify(
    {
      c: 'z',
      b: 'y',
      a: 'x'
    }
  ),
  [
    'a: x',
    'b: y',
    'c: z'
  ].join('\n')
)

Command Line Utilities

npm install --global lamos
json-to-lamos < data.json > data.lamos
lamos-to-json < data.lamos
10.0.0

6 months ago

5.0.0-pre.1

7 months ago

9.0.0

7 months ago

4.0.0

4 years ago

3.0.4

6 years ago

3.0.3

7 years ago

3.0.2

7 years ago

3.0.1

7 years ago

3.0.0

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.2.0

7 years ago

1.1.0

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago