feat: add display UI with splash screen, dashboard, and RSSI sparkline
Implement full SSD1306 OLED display support: - Splash screen on boot (1.5s) with project name, version, board - Dashboard showing radio state, config, counters, RSSI/SNR - RSSI history sparkline (64-sample ring buffer, 2px-wide bars) - DisplayOn/DisplayOff host commands routed via dedicated channel - Pure render functions against generic DrawTarget (no hardware coupling) - Display on/off control bypasses radio task entirely Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
17624 files changed
+4564928
-38
No files matched your search
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"thevoid": { "type": "array", "value": [
|
||||
{"type": "array", "value": [
|
||||
{"type": "array", "value": [
|
||||
{"type": "array", "value": [
|
||||
{"type": "array", "value": []}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
]}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
thevoid = [[[[[]]]]]
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"arrays-and-ints": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "integer", "value": "1"},
|
||||
{"type": "array", "value": [
|
||||
{ "type": "string", "value":"Arrays are not integers."}
|
||||
]}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
arrays-and-ints = [1, ["Arrays are not integers."]]
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ints-and-floats": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "integer", "value": "1"},
|
||||
{"type": "float", "value": "1.1"}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
ints-and-floats = [1, 1.1]
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"strings-and-ints": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "string", "value": "hi"},
|
||||
{"type": "integer", "value": "42"}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
strings-and-ints = ["hi", 42]
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"ints": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "integer", "value": "1"},
|
||||
{"type": "integer", "value": "2"},
|
||||
{"type": "integer", "value": "3"}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
ints = [1,2,3]
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"mixed": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "array", "value": [
|
||||
{"type": "integer", "value": "1"},
|
||||
{"type": "integer", "value": "2"}
|
||||
]},
|
||||
{"type": "array", "value": [
|
||||
{"type": "string", "value": "a"},
|
||||
{"type": "string", "value": "b"}
|
||||
]},
|
||||
{"type": "array", "value": [
|
||||
{"type": "float", "value": "1.1"},
|
||||
{"type": "float", "value": "2.1"}
|
||||
]}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
mixed = [[1, 2], ["a", "b"], [1.1, 2.1]]
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"nest": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "array", "value": [
|
||||
{"type": "string", "value": "a"}
|
||||
]},
|
||||
{"type": "array", "value": [
|
||||
{"type": "string", "value": "b"}
|
||||
]}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
nest = [["a"], ["b"]]
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"ints": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "integer", "value": "1"},
|
||||
{"type": "integer", "value": "2"},
|
||||
{"type": "integer", "value": "3"}
|
||||
]
|
||||
},
|
||||
"floats": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "float", "value": "1.1"},
|
||||
{"type": "float", "value": "2.1"},
|
||||
{"type": "float", "value": "3.1"}
|
||||
]
|
||||
},
|
||||
"strings": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "string", "value": "a"},
|
||||
{"type": "string", "value": "b"},
|
||||
{"type": "string", "value": "c"}
|
||||
]
|
||||
},
|
||||
"dates": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "datetime", "value": "1987-07-05T17:45:00Z"},
|
||||
{"type": "datetime", "value": "1979-05-27T07:32:00Z"},
|
||||
{"type": "datetime", "value": "2006-06-01T11:00:00Z"}
|
||||
]
|
||||
}
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
ints = [1, 2, 3]
|
||||
floats = [1.1, 2.1, 3.1]
|
||||
strings = ["a", "b", "c"]
|
||||
dates = [
|
||||
1987-07-05T17:45:00Z,
|
||||
1979-05-27T07:32:00Z,
|
||||
2006-06-01T11:00:00Z,
|
||||
]
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"f": {"type": "bool", "value": "false"},
|
||||
"t": {"type": "bool", "value": "true"}
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
t = true
|
||||
f = false
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"group": {
|
||||
"answer": {"type": "integer", "value": "42"},
|
||||
"more": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "integer", "value": "42"},
|
||||
{"type": "integer", "value": "42"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
# Top comment.
|
||||
# Top comment.
|
||||
# Top comment.
|
||||
|
||||
# [no-extraneous-groups-please]
|
||||
|
||||
[group] # Comment
|
||||
answer = 42 # Comment
|
||||
# no-extraneous-keys-please = 999
|
||||
# In between comment.
|
||||
more = [ # Comment
|
||||
# What about multiple # comments?
|
||||
# Can you handle it?
|
||||
#
|
||||
# Evil.
|
||||
# Evil.
|
||||
42, 42, # Comments within arrays are fun.
|
||||
# What about multiple # comments?
|
||||
# Can you handle it?
|
||||
#
|
||||
# Evil.
|
||||
# Evil.
|
||||
# ] Did I fool you?
|
||||
] # Hopefully not.
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"bestdayever": {
|
||||
"type": "datetime",
|
||||
"value": "1987-07-05T17:45:00.123456789Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
bestdayever = 1987-07-05T17:45:00.123456789012345Z
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"bestdayever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"}
|
||||
}
|
||||
+1
@@ -0,0 +1 @@
|
||||
bestdayever = 1987-07-05T17:45:00Z
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"a": {
|
||||
"b": {
|
||||
"type": "integer",
|
||||
"value": "123"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"a": {
|
||||
"b": {
|
||||
"c": {
|
||||
"type": "integer",
|
||||
"value": "1"
|
||||
},
|
||||
"d": {
|
||||
"type": "integer",
|
||||
"value": "2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"in": {
|
||||
"type": {
|
||||
"color": {
|
||||
"type": "string",
|
||||
"value": "blue"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"value": "cat"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
a.b = 123
|
||||
|
||||
[table]
|
||||
a.b.c = 1
|
||||
a . b . d = 2
|
||||
|
||||
in = { type.name = "cat", type.color = "blue" }
|
||||
+1
@@ -0,0 +1 @@
|
||||
{}
|
||||
Whitespace-only changes.
@@ -0,0 +1,5 @@
|
||||
best-day-ever = 1987-07-05T17:45:00Z
|
||||
|
||||
[numtheory]
|
||||
boring = false
|
||||
perfection = [6, 28, 496]
|
||||
@@ -0,0 +1 @@
|
||||
{"Array":{"key1":{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"},{"type":"integer","value":"3"}]},"key2":{"type":"array","value":[{"type":"string","value":"red"},{"type":"string","value":"yellow"},{"type":"string","value":"green"}]},"key3":{"type":"array","value":[{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"}]},{"type":"array","value":[{"type":"integer","value":"3"},{"type":"integer","value":"4"},{"type":"integer","value":"5"}]}]},"key4":{"type":"array","value":[{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"}]},{"type":"array","value":[{"type":"string","value":"a"},{"type":"string","value":"b"},{"type":"string","value":"c"}]}]},"key5":{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"},{"type":"integer","value":"3"}]},"key6":{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"}]}},"Booleans":{"False":{"type":"bool","value":"false"},"True":{"type":"bool","value":"true"}},"Datetime":{"key1":{"type":"datetime","value":"1979-05-27T07:32:00Z"}},"Float":{"both":{},"exponent":{},"fractional":{"key1":{"type":"float","value":"1.0"},"key2":{"type":"float","value":"3.1415"},"key3":{"type":"float","value":"-0.01"}}},"Integer":{"key1":{"type":"integer","value":"99"},"key2":{"type":"integer","value":"42"},"key3":{"type":"integer","value":"0"},"key4":{"type":"integer","value":"-17"}},"String":{"Literal":{"Multiline":{"lines":{"type":"string","value":"The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n"},"regex2":{"type":"string","value":"I [dw]on't need \\d{2} apples"}},"quoted":{"type":"string","value":"Tom \"Dubs\" Preston-Werner"},"regex":{"type":"string","value":"\u003c\\i\\c*\\s*\u003e"},"winpath":{"type":"string","value":"C:\\Users\\nodejs\\templates"},"winpath2":{"type":"string","value":"\\\\ServerX\\admin$\\system32\\"}},"Multiline":{"key1":{"type":"string","value":"One\nTwo"},"key2":{"type":"string","value":"One\nTwo"},"key3":{"type":"string","value":"One\nTwo"}},"Multilined":{"Singleline":{"key1":{"type":"string","value":"The quick brown fox jumps over the lazy dog."},"key2":{"type":"string","value":"The quick brown fox jumps over the lazy dog."},"key3":{"type":"string","value":"The quick brown fox jumps over the lazy dog."}}},"basic":{"type":"string","value":"I'm a string. \"You can quote me\". Name\u0009José\nLocation\u0009SF."}},"Table":{"key":{"type":"string","value":"value"}},"dog":{"tater":{"type":{"type":"string","value":"pug"}}},"fruit":[{"name":{"type":"string","value":"apple"},"physical":{"color":{"type":"string","value":"red"},"shape":{"type":"string","value":"round"}},"variety":[{"name":{"type":"string","value":"red delicious"}},{"name":{"type":"string","value":"granny smith"}}]},{"name":{"type":"string","value":"banana"},"variety":[{"name":{"type":"string","value":"plantain"}}]}],"products":[{"name":{"type":"string","value":"Hammer"},"sku":{"type":"integer","value":"738594937"}},{},{"color":{"type":"string","value":"gray"},"name":{"type":"string","value":"Nail"},"sku":{"type":"integer","value":"284758393"}}],"x":{"y":{"z":{"w":{}}}}}
|
||||
+182
@@ -0,0 +1,182 @@
|
||||
# Comment
|
||||
# I am a comment. Hear me roar. Roar.
|
||||
|
||||
# Table
|
||||
# Tables (also known as hash tables or dictionaries) are collections of key/value pairs.
|
||||
# They appear in square brackets on a line by themselves.
|
||||
|
||||
[Table]
|
||||
|
||||
key = "value" # Yeah, you can do this.
|
||||
|
||||
# Nested tables are denoted by table names with dots in them. Name your tables whatever crap you please, just don't use #, ., [ or ].
|
||||
|
||||
[dog.tater]
|
||||
type = "pug"
|
||||
|
||||
# You don't need to specify all the super-tables if you don't want to. TOML knows how to do it for you.
|
||||
|
||||
# [x] you
|
||||
# [x.y] don't
|
||||
# [x.y.z] need these
|
||||
[x.y.z.w] # for this to work
|
||||
|
||||
# String
|
||||
# There are four ways to express strings: basic, multi-line basic, literal, and multi-line literal.
|
||||
# All strings must contain only valid UTF-8 characters.
|
||||
|
||||
[String]
|
||||
basic = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF."
|
||||
|
||||
[String.Multiline]
|
||||
|
||||
# The following strings are byte-for-byte equivalent:
|
||||
key1 = "One\nTwo"
|
||||
key2 = """One\nTwo"""
|
||||
key3 = """
|
||||
One
|
||||
Two"""
|
||||
|
||||
[String.Multilined.Singleline]
|
||||
|
||||
# The following strings are byte-for-byte equivalent:
|
||||
key1 = "The quick brown fox jumps over the lazy dog."
|
||||
|
||||
key2 = """
|
||||
The quick brown \
|
||||
|
||||
|
||||
fox jumps over \
|
||||
the lazy dog."""
|
||||
|
||||
key3 = """\
|
||||
The quick brown \
|
||||
fox jumps over \
|
||||
the lazy dog.\
|
||||
"""
|
||||
|
||||
[String.Literal]
|
||||
|
||||
# What you see is what you get.
|
||||
winpath = 'C:\Users\nodejs\templates'
|
||||
winpath2 = '\\ServerX\admin$\system32\'
|
||||
quoted = 'Tom "Dubs" Preston-Werner'
|
||||
regex = '<\i\c*\s*>'
|
||||
|
||||
|
||||
[String.Literal.Multiline]
|
||||
|
||||
regex2 = '''I [dw]on't need \d{2} apples'''
|
||||
lines = '''
|
||||
The first newline is
|
||||
trimmed in raw strings.
|
||||
All other whitespace
|
||||
is preserved.
|
||||
'''
|
||||
|
||||
# Integer
|
||||
# Integers are whole numbers. Positive numbers may be prefixed with a plus sign.
|
||||
# Negative numbers are prefixed with a minus sign.
|
||||
|
||||
[Integer]
|
||||
key1 = +99
|
||||
key2 = 42
|
||||
key3 = 0
|
||||
key4 = -17
|
||||
|
||||
# Float
|
||||
# A float consists of an integer part (which may be prefixed with a plus or minus sign)
|
||||
# followed by a fractional part and/or an exponent part.
|
||||
|
||||
[Float.fractional]
|
||||
|
||||
# fractional
|
||||
key1 = +1.0
|
||||
key2 = 3.1415
|
||||
key3 = -0.01
|
||||
|
||||
[Float.exponent]
|
||||
|
||||
# exponent
|
||||
#key1 = 5e+22
|
||||
#key2 = 1e6
|
||||
#key3 = -2E-2
|
||||
|
||||
[Float.both]
|
||||
|
||||
# both
|
||||
#key = 6.626e-34
|
||||
|
||||
# Boolean
|
||||
# Booleans are just the tokens you're used to. Always lowercase.
|
||||
|
||||
[Booleans]
|
||||
True = true
|
||||
False = false
|
||||
|
||||
# Datetime
|
||||
# Datetimes are RFC 3339 dates.
|
||||
|
||||
[Datetime]
|
||||
key1 = 1979-05-27T07:32:00Z
|
||||
#key2 = 1979-05-27T00:32:00-07:00
|
||||
#key3 = 1979-05-27T00:32:00.999999-07:00
|
||||
|
||||
# Array
|
||||
# Arrays are square brackets with other primitives inside. Whitespace is ignored. Elements are separated by commas. Data types may not be mixed.
|
||||
|
||||
[Array]
|
||||
key1 = [ 1, 2, 3 ]
|
||||
key2 = [ "red", "yellow", "green" ]
|
||||
key3 = [ [ 1, 2 ], [3, 4, 5] ]
|
||||
key4 = [ [ 1, 2 ], ["a", "b", "c"] ] # this is ok
|
||||
|
||||
#Arrays can also be multiline. So in addition to ignoring whitespace, arrays also ignore newlines between the brackets.
|
||||
# Terminating commas are ok before the closing bracket.
|
||||
|
||||
key5 = [
|
||||
1, 2, 3
|
||||
]
|
||||
key6 = [
|
||||
1,
|
||||
2, # this is ok
|
||||
]
|
||||
|
||||
# Array of Tables
|
||||
# These can be expressed by using a table name in double brackets.
|
||||
# Each table with the same double bracketed name will be an element in the array.
|
||||
# The tables are inserted in the order encountered.
|
||||
|
||||
[[products]]
|
||||
name = "Hammer"
|
||||
sku = 738594937
|
||||
|
||||
[[products]]
|
||||
|
||||
[[products]]
|
||||
name = "Nail"
|
||||
sku = 284758393
|
||||
color = "gray"
|
||||
|
||||
|
||||
# You can create nested arrays of tables as well.
|
||||
|
||||
[[fruit]]
|
||||
name = "apple"
|
||||
|
||||
[fruit.physical]
|
||||
color = "red"
|
||||
shape = "round"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "red delicious"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "granny smith"
|
||||
|
||||
[[fruit]]
|
||||
name = "banana"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "plantain"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"array":{"key1":{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"},{"type":"integer","value":"3"}]},"key2":{"type":"array","value":[{"type":"string","value":"red"},{"type":"string","value":"yellow"},{"type":"string","value":"green"}]},"key3":{"type":"array","value":[{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"}]},{"type":"array","value":[{"type":"integer","value":"3"},{"type":"integer","value":"4"},{"type":"integer","value":"5"}]}]},"key4":{"type":"array","value":[{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"}]},{"type":"array","value":[{"type":"string","value":"a"},{"type":"string","value":"b"},{"type":"string","value":"c"}]}]},"key5":{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"},{"type":"integer","value":"3"}]},"key6":{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"}]}},"boolean":{"False":{"type":"bool","value":"false"},"True":{"type":"bool","value":"true"}},"datetime":{},"float":{"both":{},"exponent":{},"fractional":{"key1":{"type":"float","value":"1.0"},"key2":{"type":"float","value":"3.1415"},"key3":{"type":"float","value":"-0.01"}},"underscores":{}},"fruit":[{"name":{"type":"string","value":"apple"},"physical":{"color":{"type":"string","value":"red"},"shape":{"type":"string","value":"round"}},"variety":[{"name":{"type":"string","value":"red delicious"}},{"name":{"type":"string","value":"granny smith"}}]},{"name":{"type":"string","value":"banana"},"variety":[{"name":{"type":"string","value":"plantain"}}]}],"integer":{"key1":{"type":"integer","value":"99"},"key2":{"type":"integer","value":"42"},"key3":{"type":"integer","value":"0"},"key4":{"type":"integer","value":"-17"},"underscores":{"key1":{"type":"integer","value":"1000"},"key2":{"type":"integer","value":"5349221"},"key3":{"type":"integer","value":"12345"}}},"products":[{"name":{"type":"string","value":"Hammer"},"sku":{"type":"integer","value":"738594937"}},{},{"color":{"type":"string","value":"gray"},"name":{"type":"string","value":"Nail"},"sku":{"type":"integer","value":"284758393"}}],"string":{"basic":{"basic":{"type":"string","value":"I'm a string. \"You can quote me\". Name\u0009José\nLocation\u0009SF."}},"literal":{"multiline":{"lines":{"type":"string","value":"The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n"},"regex2":{"type":"string","value":"I [dw]on't need \\d{2} apples"}},"quoted":{"type":"string","value":"Tom \"Dubs\" Preston-Werner"},"regex":{"type":"string","value":"\u003c\\i\\c*\\s*\u003e"},"winpath":{"type":"string","value":"C:\\Users\\nodejs\\templates"},"winpath2":{"type":"string","value":"\\\\ServerX\\admin$\\system32\\"}},"multiline":{"continued":{"key1":{"type":"string","value":"The quick brown fox jumps over the lazy dog."},"key2":{"type":"string","value":"The quick brown fox jumps over the lazy dog."},"key3":{"type":"string","value":"The quick brown fox jumps over the lazy dog."}},"key1":{"type":"string","value":"One\nTwo"},"key2":{"type":"string","value":"One\nTwo"},"key3":{"type":"string","value":"One\nTwo"}}},"table":{"inline":{"name":{"first":{"type":"string","value":"Tom"},"last":{"type":"string","value":"Preston-Werner"}},"point":{"x":{"type":"integer","value":"1"},"y":{"type":"integer","value":"2"}}},"key":{"type":"string","value":"value"},"subtable":{"key":{"type":"string","value":"another value"}}},"x":{"y":{"z":{"w":{}}}}}
|
||||
+236
@@ -0,0 +1,236 @@
|
||||
################################################################################
|
||||
## Comment
|
||||
|
||||
# Speak your mind with the hash symbol. They go from the symbol to the end of
|
||||
# the line.
|
||||
|
||||
|
||||
################################################################################
|
||||
## Table
|
||||
|
||||
# Tables (also known as hash tables or dictionaries) are collections of
|
||||
# key/value pairs. They appear in square brackets on a line by themselves.
|
||||
|
||||
[table]
|
||||
|
||||
key = "value" # Yeah, you can do this.
|
||||
|
||||
# Nested tables are denoted by table names with dots in them. Name your tables
|
||||
# whatever crap you please, just don't use #, ., [ or ].
|
||||
|
||||
[table.subtable]
|
||||
|
||||
key = "another value"
|
||||
|
||||
# You don't need to specify all the super-tables if you don't want to. TOML
|
||||
# knows how to do it for you.
|
||||
|
||||
# [x] you
|
||||
# [x.y] don't
|
||||
# [x.y.z] need these
|
||||
[x.y.z.w] # for this to work
|
||||
|
||||
|
||||
################################################################################
|
||||
## Inline Table
|
||||
|
||||
# Inline tables provide a more compact syntax for expressing tables. They are
|
||||
# especially useful for grouped data that can otherwise quickly become verbose.
|
||||
# Inline tables are enclosed in curly braces `{` and `}`. No newlines are
|
||||
# allowed between the curly braces unless they are valid within a value.
|
||||
|
||||
[table.inline]
|
||||
|
||||
name = { first = "Tom", last = "Preston-Werner" }
|
||||
point = { x = 1, y = 2 }
|
||||
|
||||
|
||||
################################################################################
|
||||
## String
|
||||
|
||||
# There are four ways to express strings: basic, multi-line basic, literal, and
|
||||
# multi-line literal. All strings must contain only valid UTF-8 characters.
|
||||
|
||||
[string.basic]
|
||||
|
||||
basic = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF."
|
||||
|
||||
[string.multiline]
|
||||
|
||||
# The following strings are byte-for-byte equivalent:
|
||||
key1 = "One\nTwo"
|
||||
key2 = """One\nTwo"""
|
||||
key3 = """
|
||||
One
|
||||
Two"""
|
||||
|
||||
[string.multiline.continued]
|
||||
|
||||
# The following strings are byte-for-byte equivalent:
|
||||
key1 = "The quick brown fox jumps over the lazy dog."
|
||||
|
||||
key2 = """
|
||||
The quick brown \
|
||||
|
||||
|
||||
fox jumps over \
|
||||
the lazy dog."""
|
||||
|
||||
key3 = """\
|
||||
The quick brown \
|
||||
fox jumps over \
|
||||
the lazy dog.\
|
||||
"""
|
||||
|
||||
[string.literal]
|
||||
|
||||
# What you see is what you get.
|
||||
winpath = 'C:\Users\nodejs\templates'
|
||||
winpath2 = '\\ServerX\admin$\system32\'
|
||||
quoted = 'Tom "Dubs" Preston-Werner'
|
||||
regex = '<\i\c*\s*>'
|
||||
|
||||
|
||||
[string.literal.multiline]
|
||||
|
||||
regex2 = '''I [dw]on't need \d{2} apples'''
|
||||
lines = '''
|
||||
The first newline is
|
||||
trimmed in raw strings.
|
||||
All other whitespace
|
||||
is preserved.
|
||||
'''
|
||||
|
||||
|
||||
################################################################################
|
||||
## Integer
|
||||
|
||||
# Integers are whole numbers. Positive numbers may be prefixed with a plus sign.
|
||||
# Negative numbers are prefixed with a minus sign.
|
||||
|
||||
[integer]
|
||||
|
||||
key1 = +99
|
||||
key2 = 42
|
||||
key3 = 0
|
||||
key4 = -17
|
||||
|
||||
[integer.underscores]
|
||||
|
||||
# For large numbers, you may use underscores to enhance readability. Each
|
||||
# underscore must be surrounded by at least one digit.
|
||||
key1 = 1_000
|
||||
key2 = 5_349_221
|
||||
key3 = 1_2_3_4_5 # valid but inadvisable
|
||||
|
||||
|
||||
################################################################################
|
||||
## Float
|
||||
|
||||
# A float consists of an integer part (which may be prefixed with a plus or
|
||||
# minus sign) followed by a fractional part and/or an exponent part.
|
||||
|
||||
[float.fractional]
|
||||
|
||||
key1 = +1.0
|
||||
key2 = 3.1415
|
||||
key3 = -0.01
|
||||
|
||||
[float.exponent]
|
||||
|
||||
[float.both]
|
||||
|
||||
[float.underscores]
|
||||
|
||||
|
||||
################################################################################
|
||||
## Boolean
|
||||
|
||||
# Booleans are just the tokens you're used to. Always lowercase.
|
||||
|
||||
[boolean]
|
||||
|
||||
True = true
|
||||
False = false
|
||||
|
||||
|
||||
################################################################################
|
||||
## Datetime
|
||||
|
||||
# Datetimes are RFC 3339 dates.
|
||||
|
||||
[datetime]
|
||||
|
||||
#key1 = 1979-05-27T07:32:00Z
|
||||
#key2 = 1979-05-27T00:32:00-07:00
|
||||
#key3 = 1979-05-27T00:32:00.999999-07:00
|
||||
|
||||
|
||||
################################################################################
|
||||
## Array
|
||||
|
||||
# Arrays are square brackets with other primitives inside. Whitespace is
|
||||
# ignored. Elements are separated by commas. Since 2019-11-06 data types can be
|
||||
# mixed.
|
||||
|
||||
[array]
|
||||
|
||||
key1 = [ 1, 2, 3 ]
|
||||
key2 = [ "red", "yellow", "green" ]
|
||||
key3 = [ [ 1, 2 ], [3, 4, 5] ]
|
||||
key4 = [ [ 1, 2 ], ["a", "b", "c"] ] # this is ok
|
||||
|
||||
# Arrays can also be multiline. So in addition to ignoring whitespace, arrays
|
||||
# also ignore newlines between the brackets. Terminating commas are ok before
|
||||
# the closing bracket.
|
||||
|
||||
key5 = [
|
||||
1, 2, 3
|
||||
]
|
||||
key6 = [
|
||||
1,
|
||||
2, # this is ok
|
||||
]
|
||||
|
||||
|
||||
################################################################################
|
||||
## Array of Tables
|
||||
|
||||
# These can be expressed by using a table name in double brackets. Each table
|
||||
# with the same double bracketed name will be an element in the array. The
|
||||
# tables are inserted in the order encountered.
|
||||
|
||||
[[products]]
|
||||
|
||||
name = "Hammer"
|
||||
sku = 738594937
|
||||
|
||||
[[products]]
|
||||
|
||||
[[products]]
|
||||
|
||||
name = "Nail"
|
||||
sku = 284758393
|
||||
color = "gray"
|
||||
|
||||
|
||||
# You can create nested arrays of tables as well.
|
||||
|
||||
[[fruit]]
|
||||
name = "apple"
|
||||
|
||||
[fruit.physical]
|
||||
color = "red"
|
||||
shape = "round"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "red delicious"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "granny smith"
|
||||
|
||||
[[fruit]]
|
||||
name = "banana"
|
||||
|
||||
[[fruit.variety]]
|
||||
name = "plantain"
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"best-day-ever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"},
|
||||
"numtheory": {
|
||||
"boring": {"type": "bool", "value": "false"},
|
||||
"perfection": {
|
||||
"type": "array",
|
||||
"value": [
|
||||
{"type": "integer", "value": "6"},
|
||||
{"type": "integer", "value": "28"},
|
||||
{"type": "integer", "value": "496"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
best-day-ever = 1987-07-05T17:45:00Z
|
||||
|
||||
[numtheory]
|
||||
boring = false
|
||||
perfection = [6, 28, 496]
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"clients":{"data":{"type":"array","value":[{"type":"array","value":[{"type":"string","value":"gamma"},{"type":"string","value":"delta"}]},{"type":"array","value":[{"type":"integer","value":"1"},{"type":"integer","value":"2"}]}]},"hosts":{"type":"array","value":[{"type":"string","value":"alpha"},{"type":"string","value":"omega"}]}},"database":{"connection_max":{"type":"integer","value":"5000"},"enabled":{"type":"bool","value":"true"},"ports":{"type":"array","value":[{"type":"integer","value":"8001"},{"type":"integer","value":"8001"},{"type":"integer","value":"8002"}]},"server":{"type":"string","value":"192.168.1.1"}},"owner":{"bio":{"type":"string","value":"GitHub Cofounder \u0026 CEO\nLikes tater tots and beer."},"dob":{"type":"datetime","value":"1979-05-27T07:32:00Z"},"name":{"type":"string","value":"Tom Preston-Werner"},"organization":{"type":"string","value":"GitHub"}},"products":[{"name":{"type":"string","value":"Hammer"},"sku":{"type":"integer","value":"738594937"}},{"color":{"type":"string","value":"gray"},"name":{"type":"string","value":"Nail"},"sku":{"type":"integer","value":"284758393"}}],"servers":{"alpha":{"dc":{"type":"string","value":"eqdc10"},"ip":{"type":"string","value":"10.0.0.1"}},"beta":{"country":{"type":"string","value":"中国"},"dc":{"type":"string","value":"eqdc10"},"ip":{"type":"string","value":"10.0.0.2"}}},"title":{"type":"string","value":"TOML Example"}}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
# This is a TOML document. Boom.
|
||||
|
||||
title = "TOML Example"
|
||||
|
||||
[owner]
|
||||
name = "Tom Preston-Werner"
|
||||
organization = "GitHub"
|
||||
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
|
||||
dob = 1979-05-27T07:32:00Z # First class dates? Why not?
|
||||
|
||||
[database]
|
||||
server = "192.168.1.1"
|
||||
ports = [ 8001, 8001, 8002 ]
|
||||
connection_max = 5000
|
||||
enabled = true
|
||||
|
||||
[servers]
|
||||
|
||||
# You can indent as you please. Tabs or spaces. TOML don't care.
|
||||
[servers.alpha]
|
||||
ip = "10.0.0.1"
|
||||
dc = "eqdc10"
|
||||
|
||||
[servers.beta]
|
||||
ip = "10.0.0.2"
|
||||
dc = "eqdc10"
|
||||
country = "中国" # This should be parsed as UTF-8
|
||||
|
||||
[clients]
|
||||
data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it
|
||||
|
||||
# Line breaks are OK when inside arrays
|
||||
hosts = [
|
||||
"alpha",
|
||||
"omega"
|
||||
]
|
||||
|
||||
# Products
|
||||
|
||||
[[products]]
|
||||
name = "Hammer"
|
||||
sku = 738594937
|
||||
|
||||
[[products]]
|
||||
name = "Nail"
|
||||
sku = 284758393
|
||||
color = "gray"
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"lower": {"type": "float", "value": "300.0"},
|
||||
"upper": {"type": "float", "value": "300.0"},
|
||||
"neg": {"type": "float", "value": "0.03"},
|
||||
"pos": {"type": "float", "value": "300.0"},
|
||||
"zero": {"type": "float", "value": "3.0"},
|
||||
"pointlower": {"type": "float", "value": "310.0"},
|
||||
"pointupper": {"type": "float", "value": "310.0"},
|
||||
"prefix-zero-exp": {"type": "float", "value": "1000000.0"},
|
||||
"prefix-zero-exp-plus": {"type": "float", "value": "1000000.0"}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
lower = 3e2
|
||||
upper = 3E2
|
||||
neg = 3e-2
|
||||
pos = 3E+2
|
||||
zero = 3e0
|
||||
pointlower = 3.1e2
|
||||
pointupper = 3.1E2
|
||||
prefix-zero-exp = 1e06
|
||||
prefix-zero-exp-plus = 1e+06
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"pi": {"type": "float", "value": "3.14"},
|
||||
"negpi": {"type": "float", "value": "-3.14"}
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
pi = 3.14
|
||||
negpi = -3.14
|
||||
@@ -0,0 +1 @@
|
||||
{"the":{"hard":{"another_test_string":{"type":"string","value":" Same thing, but with a string #"},"bit#":{"multi_line_array":{"type":"array","value":[{"type":"string","value":"]"}]},"what?":{"type":"string","value":"You don't think some user won't do that?"}},"harder_test_string":{"type":"string","value":" And when \"'s are in the string, along with # \""},"test_array":{"type":"array","value":[{"type":"string","value":"] "},{"type":"string","value":" # "}]},"test_array2":{"type":"array","value":[{"type":"string","value":"Test #11 ]proved that"},{"type":"string","value":"Experiment #9 was a success"}]}},"test_string":{"type":"string","value":"You'll hate me after this - #"}}}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
# Test file for TOML
|
||||
# Only this one tries to emulate a TOML file written by a user of the kind of parser writers probably hate
|
||||
# This part you'll really hate
|
||||
|
||||
[the]
|
||||
test_string = "You'll hate me after this - #" # " Annoying, isn't it?
|
||||
|
||||
[the.hard]
|
||||
test_array = [ "] ", " # "] # ] There you go, parse this!
|
||||
test_array2 = [ "Test #11 ]proved that", "Experiment #9 was a success" ]
|
||||
# You didn't think it'd as easy as chucking out the last #, did you?
|
||||
another_test_string = " Same thing, but with a string #"
|
||||
harder_test_string = " And when \"'s are in the string, along with # \"" # "and comments are there too"
|
||||
# Things will get harder
|
||||
|
||||
[the.hard."bit#"]
|
||||
"what?" = "You don't think some user won't do that?"
|
||||
multi_line_array = [
|
||||
"]",
|
||||
# ] Oh yes I did
|
||||
]
|
||||
|
||||
# Each of the following keygroups/key value pairs should produce an error. Uncomment to them to test
|
||||
|
||||
#[error] if you didn't catch this, your parser is broken
|
||||
#string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this
|
||||
#array = [
|
||||
# "This might most likely happen in multiline arrays",
|
||||
# Like here,
|
||||
# "or here,
|
||||
# and here"
|
||||
# ] End of array comment, forgot the #
|
||||
#number = 3.14 pi <--again forgot the #
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"a": {
|
||||
"better": {"type": "integer", "value": "43"},
|
||||
"b": {
|
||||
"c": {
|
||||
"answer": {"type": "integer", "value": "42"}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
[a.b.c]
|
||||
answer = 42
|
||||
|
||||
[a]
|
||||
better = 43
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"a": {
|
||||
"better": {"type": "integer", "value": "43"},
|
||||
"b": {
|
||||
"c": {
|
||||
"answer": {"type": "integer", "value": "42"}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
[a]
|
||||
better = 43
|
||||
|
||||
[a.b.c]
|
||||
answer = 42
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"a": {
|
||||
"b": {
|
||||
"c": {
|
||||
"answer": {"type": "integer", "value": "42"}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
[a.b.c]
|
||||
answer = 42
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"answer": {"type": "integer", "value": "42"},
|
||||
"neganswer": {"type": "integer", "value": "-42"},
|
||||
|
||||
"neg_zero": {"type": "integer", "value": "0"},
|
||||
"pos_zero": {"type": "integer", "value": "0"},
|
||||
|
||||
"hex1": {"type": "integer", "value": "3735928559"},
|
||||
"hex2": {"type": "integer", "value": "3735928559"},
|
||||
"hex3": {"type": "integer", "value": "3735928559"},
|
||||
"oct1": {"type": "integer", "value": "342391"},
|
||||
"oct2": {"type": "integer", "value": "493"},
|
||||
"bin1": {"type": "integer", "value": "214"}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
answer = 42
|
||||
neganswer = -42
|
||||
|
||||
neg_zero = -0
|
||||
pos_zero = +0
|
||||
|
||||
# hexadecimal with prefix `0x`
|
||||
hex1 = 0xDEADBEEF
|
||||
hex2 = 0xdeadbeef
|
||||
hex3 = 0xdead_beef
|
||||
|
||||
# octal with prefix `0o`
|
||||
oct1 = 0o01234567
|
||||
oct2 = 0o755 # useful for Unix file permissions
|
||||
|
||||
# binary with prefix `0b`
|
||||
bin1 = 0b11010110
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"": {"type": "integer", "value": "1"}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
"" = 1
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"answer": {"type": "integer", "value": "42"}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
answer=42
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"\n": {"type": "integer", "value": "1"}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
"\n" = 1
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"a b": {"type": "integer", "value": "1"}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
"a b" = 1
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"~!@#$^&*()_+-`1234567890[]\\|/?><.,;:'": {
|
||||
"type": "integer", "value": "1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
"~!@#$^&*()_+-`1234567890[]\\|/?><.,;:'" = 1
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"key#name": {"type": "integer", "value": "5"}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
"key#name" = 5
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"longpi": {"type": "float", "value": "3.141592653589793"},
|
||||
"neglongpi": {"type": "float", "value": "-3.141592653589793"}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
longpi = 3.141592653589793
|
||||
neglongpi = -3.141592653589793
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"answer": {"type": "integer", "value": "9223372036854775807"},
|
||||
"neganswer": {"type": "integer", "value": "-9223372036854775808"}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
answer = 9223372036854775807
|
||||
neganswer = -9223372036854775808
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"multiline_empty_one": {
|
||||
"type": "string",
|
||||
"value": ""
|
||||
},
|
||||
"multiline_empty_two": {
|
||||
"type": "string",
|
||||
"value": ""
|
||||
},
|
||||
"multiline_empty_three": {
|
||||
"type": "string",
|
||||
"value": ""
|
||||
},
|
||||
"multiline_empty_four": {
|
||||
"type": "string",
|
||||
"value": ""
|
||||
},
|
||||
"multiline_empty_five": {
|
||||
"type": "string",
|
||||
"value": ""
|
||||
},
|
||||
"equivalent_one": {
|
||||
"type": "string",
|
||||
"value": "The quick brown fox jumps over the lazy dog."
|
||||
},
|
||||
"equivalent_two": {
|
||||
"type": "string",
|
||||
"value": "The quick brown fox jumps over the lazy dog."
|
||||
},
|
||||
"equivalent_three": {
|
||||
"type": "string",
|
||||
"value": "The quick brown fox jumps over the lazy dog."
|
||||
},
|
||||
"equivalent_four": {
|
||||
"type": "string",
|
||||
"value": "The quick brown fox jumps over the lazy dog."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
multiline_empty_one = """"""
|
||||
multiline_empty_two = """
|
||||
"""
|
||||
multiline_empty_three = """\
|
||||
"""
|
||||
multiline_empty_four = """\
|
||||
\
|
||||
\
|
||||
"""
|
||||
multiline_empty_five = """\
|
||||
\
|
||||
\
|
||||
\
|
||||
"""
|
||||
|
||||
equivalent_one = "The quick brown fox jumps over the lazy dog."
|
||||
equivalent_two = """
|
||||
The quick brown \
|
||||
|
||||
|
||||
fox jumps over \
|
||||
the lazy dog."""
|
||||
|
||||
equivalent_three = """\
|
||||
The quick brown \
|
||||
fox jumps over \
|
||||
the lazy dog.\
|
||||
"""
|
||||
|
||||
equivalent_four = """\
|
||||
The quick brown \
|
||||
fox jumps over \
|
||||
the lazy dog.\
|
||||
"""
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"double": {
|
||||
"type": "string",
|
||||
"value": "\"double quotes here\""
|
||||
},
|
||||
"single": {
|
||||
"type": "string",
|
||||
"value": "'single quotes here'"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
double = '"double quotes here"'
|
||||
single = "'single quotes here'"
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"oneline": {
|
||||
"type": "string",
|
||||
"value": "This string has a ' quote character."
|
||||
},
|
||||
"firstnl": {
|
||||
"type": "string",
|
||||
"value": "This string has a ' quote character."
|
||||
},
|
||||
"multiline": {
|
||||
"type": "string",
|
||||
"value": "This string\nhas ' a quote character\nand more than\none newline\nin it."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
oneline = '''This string has a ' quote character.'''
|
||||
firstnl = '''
|
||||
This string has a ' quote character.'''
|
||||
multiline = '''
|
||||
This string
|
||||
has ' a quote character
|
||||
and more than
|
||||
one newline
|
||||
in it.'''
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"backspace": {
|
||||
"type": "string",
|
||||
"value": "This string has a \\b backspace character."
|
||||
},
|
||||
"tab": {
|
||||
"type": "string",
|
||||
"value": "This string has a \\t tab character."
|
||||
},
|
||||
"newline": {
|
||||
"type": "string",
|
||||
"value": "This string has a \\n new line character."
|
||||
},
|
||||
"formfeed": {
|
||||
"type": "string",
|
||||
"value": "This string has a \\f form feed character."
|
||||
},
|
||||
"carriage": {
|
||||
"type": "string",
|
||||
"value": "This string has a \\r carriage return character."
|
||||
},
|
||||
"slash": {
|
||||
"type": "string",
|
||||
"value": "This string has a \\/ slash character."
|
||||
},
|
||||
"backslash": {
|
||||
"type": "string",
|
||||
"value": "This string has a \\\\ backslash character."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
backspace = 'This string has a \b backspace character.'
|
||||
tab = 'This string has a \t tab character.'
|
||||
newline = 'This string has a \n new line character.'
|
||||
formfeed = 'This string has a \f form feed character.'
|
||||
carriage = 'This string has a \r carriage return character.'
|
||||
slash = 'This string has a \/ slash character.'
|
||||
backslash = 'This string has a \\ backslash character.'
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"str1": {
|
||||
"type": "string",
|
||||
"value": "\"This,\" she said, \"is just a pointless statement.\""
|
||||
},
|
||||
"str2": {
|
||||
"type": "string",
|
||||
"value": "foo''bar''"
|
||||
},
|
||||
"str3": {
|
||||
"type": "string",
|
||||
"value": "\"\""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
str1 = """"This," she said, "is just a pointless statement.""""
|
||||
str2 = '''foo''bar'''''
|
||||
str3 = """"""""
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"answer": {
|
||||
"type": "string",
|
||||
"value": ""
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
answer = ""
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"backspace": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u0008 backspace character."
|
||||
},
|
||||
"tab": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u0009 tab character."
|
||||
},
|
||||
"newline": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u000A new line character."
|
||||
},
|
||||
"formfeed": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u000C form feed character."
|
||||
},
|
||||
"carriage": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u000D carriage return character."
|
||||
},
|
||||
"quote": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u0022 quote character."
|
||||
},
|
||||
"slash": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u002F slash character."
|
||||
},
|
||||
"backslash": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u005C backslash character."
|
||||
},
|
||||
"notunicode1": {
|
||||
"type": "string",
|
||||
"value": "This string does not have a unicode \\u escape."
|
||||
},
|
||||
"notunicode2": {
|
||||
"type": "string",
|
||||
"value": "This string does not have a unicode \u005Cu escape."
|
||||
},
|
||||
"notunicode3": {
|
||||
"type": "string",
|
||||
"value": "This string does not have a unicode \\u0075 escape."
|
||||
},
|
||||
"notunicode4": {
|
||||
"type": "string",
|
||||
"value": "This string does not have a unicode \\\u0075 escape."
|
||||
},
|
||||
"delete": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u007f delete control code."
|
||||
},
|
||||
"unitseparator": {
|
||||
"type": "string",
|
||||
"value": "This string has a \u001f unit separator control code."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
backspace = "This string has a \b backspace character."
|
||||
tab = "This string has a \t tab character."
|
||||
newline = "This string has a \n new line character."
|
||||
formfeed = "This string has a \f form feed character."
|
||||
carriage = "This string has a \r carriage return character."
|
||||
quote = "This string has a \" quote character."
|
||||
slash = "This string has a / slash character."
|
||||
backslash = "This string has a \\ backslash character."
|
||||
notunicode1 = "This string does not have a unicode \\u escape."
|
||||
notunicode2 = "This string does not have a unicode \u005Cu escape."
|
||||
notunicode3 = "This string does not have a unicode \\u0075 escape."
|
||||
notunicode4 = "This string does not have a unicode \\\u0075 escape."
|
||||
delete = "This string has a \u007F delete control code."
|
||||
unitseparator = "This string has a \u001F unit separator control code."
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"answer": {
|
||||
"type": "string",
|
||||
"value": "You are not drinking enough whisky."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
answer = "You are not drinking enough whisky."
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"pound": {"type": "string", "value": "We see no # comments here."},
|
||||
"poundcomment": {
|
||||
"type": "string",
|
||||
"value": "But there are # some comments here."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
pound = "We see no # comments here."
|
||||
poundcomment = "But there are # some comments here." # Did I # mess you up?
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"albums": {
|
||||
"songs": [
|
||||
{"name": {"type": "string", "value": "Glory Days"}}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
[[albums.songs]]
|
||||
name = "Glory Days"
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"people": [
|
||||
{
|
||||
"first_name": {"type": "string", "value": "Bruce"},
|
||||
"last_name": {"type": "string", "value": "Springsteen"}
|
||||
},
|
||||
{
|
||||
"first_name": {"type": "string", "value": "Eric"},
|
||||
"last_name": {"type": "string", "value": "Clapton"}
|
||||
},
|
||||
{
|
||||
"first_name": {"type": "string", "value": "Bob"},
|
||||
"last_name": {"type": "string", "value": "Seger"}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
[[people]]
|
||||
first_name = "Bruce"
|
||||
last_name = "Springsteen"
|
||||
|
||||
[[people]]
|
||||
first_name = "Eric"
|
||||
last_name = "Clapton"
|
||||
|
||||
[[people]]
|
||||
first_name = "Bob"
|
||||
last_name = "Seger"
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"albums": [
|
||||
{
|
||||
"songs": [{}, {}]
|
||||
}
|
||||
],
|
||||
"artists": [
|
||||
{
|
||||
"home": {
|
||||
"address": {}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
[[ albums ]]
|
||||
[[ albums.songs ]]
|
||||
[[ albums.songs ]]
|
||||
|
||||
[[ artists ]]
|
||||
[ artists.home.address ]
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"albums": [
|
||||
{
|
||||
"name": {"type": "string", "value": "Born to Run"},
|
||||
"songs": [
|
||||
{"name": {"type": "string", "value": "Jungleland"}},
|
||||
{"name": {"type": "string", "value": "Meeting Across the River"}}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": {"type": "string", "value": "Born in the USA"},
|
||||
"songs": [
|
||||
{"name": {"type": "string", "value": "Glory Days"}},
|
||||
{"name": {"type": "string", "value": "Dancing in the Dark"}}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
[[albums]]
|
||||
name = "Born to Run"
|
||||
|
||||
[[albums.songs]]
|
||||
name = "Jungleland"
|
||||
|
||||
[[albums.songs]]
|
||||
name = "Meeting Across the River"
|
||||
|
||||
[[albums]]
|
||||
name = "Born in the USA"
|
||||
|
||||
[[albums.songs]]
|
||||
name = "Glory Days"
|
||||
|
||||
[[albums.songs]]
|
||||
name = "Dancing in the Dark"
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"people": [
|
||||
{
|
||||
"first_name": {"type": "string", "value": "Bruce"},
|
||||
"last_name": {"type": "string", "value": "Springsteen"}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
[[people]]
|
||||
first_name = "Bruce"
|
||||
last_name = "Springsteen"
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"a": {}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
[a]
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"a": { "b": {} },
|
||||
"b": {},
|
||||
"c": { "a": {} }
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
[a]
|
||||
[a.b]
|
||||
[b]
|
||||
[c]
|
||||
[c.a]
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"a": { "b": {} }
|
||||
}
|
||||
Loaded 100 of 17624 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user