HomePage | QuickStart | Navigate

The Set|File Site

Page generated from: QuickStart_v4.4.md



Set|Files

Quick Start

Learn SET Files in 5 minutes


What are SET Files?

SET Files are Human and AI - readable text files, for storing settings and configuration data.
One flexible format with two flavors:

Q-Set (.qset ) - Quick SET files, the baseline standard

X-Set (.xset) - Extended SET files, the same simplicity but quite flexible using mix-and-match extensions This guide focuses on Q-Set - the foundation that works everywhere.

The Absolute Minimum

1. Create a File


myconfig.qset

That's the filename on the first line. That's it, no data yet but it's a valid SET file.

2. Add a Group

Groups are sections that hold related data. Start with [GROUPNAME]:


myconfig.qset

[DATABASE]
Host|localhost
Port|5432
User|admin

Rules:

3. Done!

That's a valid Q-Set file. You can read it, edit it, parse it.


Two Ways to Store Data

But only one format!

Named Data (Key:Value pairs or multi-field settings)


[SETTINGS]
AppName|My App
Theme|dark
Language|en-US
Protocol|RS232|9600|8|N|1

Use for: Configuration, preferences, simple settings

Tables (Multiple Records)


[USERS]
{id|name|email}
1|Alice|alice@example.com
2|Bob|bob@example.com
3|Carol|carol@example.com

The {field|names} line is optional but helpful for documentation.

Use for: Lists, tables, structured data


Multi-Line Text

For long text (descriptions, licenses, etc.), use text groups:


myapp.qset

[APP_INFO]
Name|My Application
Description|[{APP_DESCRIPTION}]

[{APP_DESCRIPTION}]
This is my application.

It does many things across
multiple lines of text.

No escaping needed!
Pipes | are literal!
Backslashes \ too!

Text groups:


___CODEBLOCK_5___

Nested Arrays

Use the secondary delimiter ! for arrays within fields:


[MENU]
{id|label|items}
1|File|New!Open!Save!Exit
2|Edit|Undo!Redo!Cut!Copy
3|View|Zoom In!Zoom Out

Parse on | first to get fields, then split on ! to get nested items.

Use for: Menus, categories, multi-value fields


Escaping the Delimiter

If your data contains a pipe |, just add a backslash: \|


[DATA]
Expression|value > 10 \| value < 5
Path|C:\\Program Files\\MyApp

That's the only escaping you need (and only in regular groups, not text groups).

Comments

Any text outside groups is a comment:


myconfig.qset

This is a comment.
It explains what this file does.

[SETTINGS]
Port|8080

Comments immediately before a group are considered documentation for that group.


Complete Q-Set Example


myconfig.qset

Application configuration
Created: 2025-01-22

[DATABASE]
Host|localhost
Port|5432
Database|myapp

[SETTINGS]
Theme|dark
Language|en-US
MaxUsers|50

[USERS]
{id|name|email}
1|alice|alice@example.com
2|bob|bob@example.com

[MENU]
File|New!Open!Save!Exit
Edit|Undo!Redo!Cut!Copy

[{WELCOME_MESSAGE}]
Welcome to My Application!

Get started by configuring your settings above.
[EOG]


Parsing (Pseudocode)

python
# Read the file
lines = read_file("myconfig.qset")

# Find groups
for line in lines:
    if line.startswith('[{'):
        # Text group - collect everything until next group
        text_block_name = extract_name(line)
        # No escaping, all literal
        
    elif line.startswith('['):
        # Regular group
        group_name = extract_name(line)
        # Collect data until blank line or next group
        
    elif in_group:
        # Split on | for fields
        fields = line.split('|')
        # Optionally split fields on ! for nested arrays

That's it. Split lines on | (pipe-delimited array), store in a dictionary or object.


That's Everything You Need to Get Started

With just these Q-Set basics you can:


Quick Reference

One-Page Summary:

AI Skills:

Moving to X-Set

When you need features beyond Q-Set baseline:

X-Set adds optional extensions:

To use X-Set:

    • Start with a working Q-Set file
    • Add [THIS-FILE] Group at the top (if used, it is always the first Group)
    • Declare extensions: X-SET|extension:version!another:version
    • Change file extension to .xset
    • Use extension features
Example:


advanced.xset

[THIS-FILE]
X-SET|Delimiters:2.1!SetQL:3.6

[DELIMITERS]
Primary|#

[CONFIG]
Path#C:\Program Files\MyApp
Expression#value > 10 | value < 5

See X-Set Overview for details.


Rules Summary

Q-Set Essentials:

    • Filename on first line (optional but recommended)
    • Groups start with [NAME] (no spaces to the left of [)
    • Text groups start with [{NAME}]
    • Data separated by | pipe
    • Nested arrays use ! secondary delimiter
    • Escape pipes in data with \|
    • Text groups need no escaping (all literal)
    • Comments are any text outside groups
    • Blank lines end regular groups (but not text groups)

Start Using Q-Set in 30 Seconds

    • Create myfile.qset
    • Add [SETTINGS]
    • Add Key|Value pairs
    • Done!
Example:


myfile.qset

[SETTINGS]
AppName|My App
Version|1.0.0


Common Patterns

Configuration file:


[DATABASE]
Host|localhost
Port|5432

[APP]
Name|MyApp
Debug|false

Data table:


[PRODUCTS]
{id|name|price}
1|Widget|10.00
2|Gadget|25.00

With documentation:


[INFO]
Name|MyApp
License|[{LICENSE}]

[{LICENSE}]
MIT License
Copyright (c) 2025...
[EOG]


Next Steps

Learn More:

Tools: Community:
You now know Q-Set! Start with this, add X-Set extensions only when you need them.
← Back to Home


Page last modified on January 31, 2026, at 07:54 PM