mirror of
https://github.com/ToyB-Chan/mini-file-format.git
synced 2026-05-14 10:21:16 +02:00
415b9b6a9c5979220e1344dae472ca50cdefc705
mini-file-format
Minimalized ini format with concrete format rules. Meant to be easily read and easily parsed.
Ends with .mini i.e. config.mini.
Sections and Keys
- Sections are denoted by square brackets (
[Section]). - Subsections are nested within sections using dot notation (
[Section.Subsection]). - All (sub-) sections must be explicitly defined before used elsewhere.
- All (sub-) sections may only be defined once.
- (Sub-) sections can be empty.
- Keys within (sub-) sections use
key = valuesyntax and are seperated by new-lines. - Key and (sub-) section names may only contain
a-z,A-Z,0-9, and_. - Values may never reach over multiple lines.
- Empty keys (i.e., keys without values) are not allowed.
- Whitespaces are ignored as long as they don't split up names or values.
- Whitespaces are not allowed during (sub-) section declaration.
- Empty lines are ignored.
- Comments are denoted by
#and may only appear on separate lines. - Cases are sensitive (for both names and values), except where otherwise noted.
- The underlying size of any type is application specific.
- The parsing behavior of an illformed file is undefined.
Supported Data Types
The format supports the following data types:
Integer
- Defined as a sequence of digits (
0-9). - May be suffixed with
hto be interpreted as hexadecimal (0-9,a-f,A-F). - May be suffixed with
bto be interpreted as binary (0-1). - May contain underscores (
_) for better readability. - Example:
value = 5 - Example:
hexValue = FA8h - Example:
binValue = 0010010b - Example:
anotherDec = 1_000_375
String
- Strings are enclosed in double quotes (
""). - Strings support escape sequences using backslashes (
\). - Supported escape sequences:
\"for a double quote (")\nfor a newline\tfor a tab\rfor carriage return\\for a backslash
- Strings may be empty.
- Example:
string = "My string" - Example:
string = "Line 1\nLine 2" - Example:
string = "Tab\tSeparated" - Example:
string = "My \"escaped\" String" - Example:
string = "My string with a \\ <- backslash" - Example:
emptyString = ""
Array
- Arrays are enclosed in square brackets (
[]) and contain comma-separated values. - Arrays may contain whitespaces, as long as they don't split up values.
- Arrays may not end on a comma.
- Arrays may only contain one datatype at a time.
- Arrays may be of any positive dimension.
- Arrays may be of any positive length.
- Arrays may be empty.
- Example:
array = [5, 6, 10] - Example:
array2d = [[5, 8], [9, 7], [23, 47]] - Example:
array2d = [[9], [50, 3]] - Example:
emptyArray = []
Boolean
- Boolean values are represented as either
trueorfalse. - Example:
myBool = false
Floating-Point Numbers
- Floating-point numbers use
.for decimal notation ore/Efor scientific notation. - Floats always end with
f. - Floats may also be whole numbers without a decimal point.
- Example:
anotherValue = 1.065f - Example:
thisToo = 1e18f - Example:
scientificFloat = 1.534E3f - Example:
wholeFloat = 1f - Example:
wholeFloat = 5.f
Example Structure
[MySection]
myInteger = 5
myString = "My String"
myArray = [5, 6, 10]
myBool = false
# A comment
[MySection.MySubsection]
myFloat = 1.065f
myFloat2 = 1e18f
hexValue = FA8h
[MySection.MySubsection.AnotherSubsection]
binValue = 0010010b
# Another comment
anotherDec = 1_000_375
What not to do
[My-Section] | Invalid character in section name.
myFloat = 1.5 | Should always end with f.
myBool = True | Should not be capitalized.
myArray = [5, "Hi"] | Arrays may only contain one datatype at a time.
myArray2 = [[5, 6], 1] | Dimensions must match across all arrays (technically same as above).
myString = 'Hello' | Strings may only be encapsulated by ".
my-value = 5 | Invalid character in key.
[MyOtherSection.Subsection] | "MyOtherSection" has not been defined before.
myValue = 16 # a comment | Inline comments are not allowed.
myArray = [5, 9,] | Arrays may not end on a comma.
abc = | Keys may not contain empty values-
[ MyOtherSection] | Whitespaces are not allowed during section declaration.
myArray = [ | Values may not span over multiple lines.
[5, 7],
[9, 2]
]
Description