hackerbase/MEMBERS.md

1.9 KiB

Members Base

This file documents the internal structure of the members information storage.

Members Directory

Files in this directory with file names being four decimal digits are member files. The file name is the member id.

Symlinks to the member files serve as human-readable aliases.

The implementation handles situation when the human-readable name is the member file and the symlink is the four-digit member id.

Member File Parsing - Passes 0 and 1

Member files are read line-by-line.

Pass 0

Comments start with the # character and continue until the end of particular line.

Comments are stripped from each line before parsing. The same applies to leading and trailing whitespace after stripping comments.

Pass 1

Lines are processed as they are returned from pass 0.

Empty lines are skipped.

Lines without any whitespace are interned as symbols and error is recorded as there is only the key and no value associated with it.

Each key/value pair must begin with key token composed of non-whitespace characters before the first whitespace. This token is interned as symbol upon parsing the line. The remainder of the line is stripped of leading whitespace and stored as a string representing the value for the key.

The result of parsing is a list of parsed records containing key, value and line number for further processing.

Member File Processing - Pass 2

Processed source is scanned for known keys.

Multiple instances of single key are considered an error.

Unknown keys are considered a warning.

Valid multikeys are converted to single key with list of values and line numbers as the value for such key.

The result is a valid dictionary of keys and multikeys.

Member File Grammar

Member File Schema

nick - single word - alphabetical characters, underscore, dash, numbers