Concise Encoding is a data notation created in 2018 by Karl Stenerud.
#683on PLDB | 6Years Old |
git clone https://github.com/kstenerud/concise-encoding
Concise Encoding gives you ease and efficiency with its 1:1 compatible text and binary formats.
c1
{
"boolean" = true
"binary int" = -0b10001011
"octal int" = 0o644
"decimal int" = -10000000
"hex int" = 0xfffe0001
"very long int" = 100000000000000000000000000000000000009
"decimal float" = -14.125
"hex float" = 0x5.1ec4p+20
"very long flt" = 4.957234990634579394723460546348e+100000
"not-a-number" = nan
"infinity" = inf
"neg infinity" = -inf
}
c1
{
"string" = "Strings support escape sequences: \n \t \+1f415."
"url" = @"https://example.com/"
"email" = @"mailto:me@somewhere.com"
}
c1
{
"uuid" = f1ce4567-e89b-12d3-a456-426655440000
"date" = 2019-07-01
"time" = 18:04:00.948/Europe/Prague
"timestamp" = 2010-07-15/13:28:15.415942344
"null" = null
"media" = |m application/x-sh 23 21 2f 62 69 6e 2f 73 68 0a 0a
65 63 68 6f 20 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a|
}
c1
{
"list" = [1 2.5 "a string"]
"map" = {"one"=1 2="two" "today"=2020-09-10}
"bytes" = |u8x 01 ff de ad be ef|
"int16 array" = |i16 7374 17466 -9957|
"uint16 hex" = |u16x 91fe 443a 9c15|
"float32 array" = |f32 1.5e10 -8.31e-12|
}
c1
[
@vehicle<"make" "model" "drive" "sunroof">
@vehicle("Ford" "Explorer" "4wd" true )
@vehicle("Toyota" "Corolla" "fwd" false )
@vehicle("Honda" "Civic" "fwd" false )
]
c1
[
{
"make" = "Ford"
"model" = "Explorer"
"drive" = "4wd"
"sunroof" = true
}
{
"make" = "Toyota"
"model" = "Corolla"
"drive" = "fwd"
"sunroof" = false
}
{
"make" = "Honda"
"model" = "Civic"
"drive" = "fwd"
"sunroof" = false
}
]
c1
//
// The tree:
//
// 2
// / \
// 5 7
// / /|\
// 9 6 1 2
// / / \
// 4 8 5
//
(2
(7
2
1
(6
5
8
)
)
(5
(9
4
)
)
)
c1
//
// The weighted graph:
//
// b
// /|\
// 4 1 1
// / | \
// a-3-c-4-d
//
{
"vertices" = [
&a:{}
&b:{}
&c:{}
&d:{}
]
"edges" = [
@($a {"weight"=4 "direction"="both"} $b)
@($a {"weight"=3 "direction"="both"} $c)
@($b {"weight"=1 "direction"="both"} $c)
@($b {"weight"=1 "direction"="both"} $d)
@($c {"weight"=4 "direction"="both"} $d)
]
}
c1
{
// Entire map will be referenced later as $id1
"marked object" = &id1:{
"recursive" = $id1
}
"ref1" = $id1
"ref2" = $id1
// Reference pointing to part of another document.
"outside ref" = TEMPLATEquot;https://xyz.com/document.cte#some_id"
}
c1
{
// Custom types are user-defined, with user-supplied codecs.
"custom text" = |c "cplx(2.94+3i)"|
"custom binary" = |c 01 f6 28 3c 40 00 00 40 40|
}
Feature | Supported | Example | Token |
---|---|---|---|
Booleans | ✓ | true false | |
Comments | ✓ | // A comment | |
Line Comments | ✓ | // A comment | // |
Semantic Indentation | X |