srf-tree-sitter/test/corpus/compact_format.txt
2026-09-01 10:07:02 -07:00

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))))