201 lines
3.1 KiB
Text
201 lines
3.1 KiB
Text
==================
|
|
Commas delimit fields by default
|
|
==================
|
|
#!srfv1
|
|
name::alice,age:num:30
|
|
name::bob,age:num:25
|
|
|
|
---
|
|
|
|
(document
|
|
(magic)
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value)))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value))))
|
|
|
|
==================
|
|
Explicit compact directive
|
|
==================
|
|
#!srfv1
|
|
#!compact
|
|
name::alice,age:num:30
|
|
|
|
---
|
|
|
|
(document
|
|
(magic)
|
|
(directive
|
|
(directive_compact))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value))))
|
|
|
|
==================
|
|
Last format directive wins
|
|
==================
|
|
#!srfv1
|
|
#!long
|
|
#!compact
|
|
name::alice,age:num:30
|
|
|
|
---
|
|
|
|
(document
|
|
(magic)
|
|
(directive
|
|
(directive_long))
|
|
(directive
|
|
(directive_compact))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value))))
|
|
|
|
==================
|
|
Directives sharing a prefix with the format markers
|
|
==================
|
|
#!srfv1
|
|
#!created=1772500000
|
|
#!longhand=1
|
|
#!compaction=1
|
|
name::alice,age:num:30
|
|
|
|
---
|
|
|
|
(document
|
|
(magic)
|
|
(directive
|
|
(directive_created
|
|
value: (timestamp)))
|
|
(directive
|
|
(directive_unknown))
|
|
(directive
|
|
(directive_unknown))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value))))
|
|
|
|
==================
|
|
A format marker inside an inline comment is not a directive
|
|
==================
|
|
#!srfv1
|
|
#!long # compact format is optional #!compact
|
|
name::alice, bob
|
|
|
|
---
|
|
|
|
(document
|
|
(magic)
|
|
(directive
|
|
(directive_long
|
|
(inline_comment)))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value))))
|
|
|
|
==================
|
|
A format marker in a value is not a directive
|
|
==================
|
|
#!srfv1
|
|
k::#!long,j::#!compact
|
|
name::alice,age:num:30
|
|
|
|
---
|
|
|
|
(document
|
|
(magic)
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value))))
|
|
|
|
==================
|
|
Compact format from the SRF README
|
|
==================
|
|
#!srfv1 # mandatory comment with format and version. Parser instructions start with #!
|
|
key::string value must have a length between colons or end with a comma,this is a number:num:5 ,null value:null:,array::array's don't exist. Use json or toml or something,data with newlines must have a length:7:foo
|
|
bar,boolean value:bool:false
|
|
key::this is the second record
|
|
|
|
---
|
|
|
|
(document
|
|
(magic
|
|
(inline_comment))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value)))
|
|
(field
|
|
(typed_field
|
|
(key)
|
|
(type_hint)
|
|
(value)))
|
|
(field
|
|
(untyped_field
|
|
(key)
|
|
(value))))
|