separator pattern

alias

Delimiter.

idea

An element indicates the boundary between two other elements.

context

A sequence with at least two elements and a third separator element.

motivation

Indicate borders and connections between data elements.

implementations

Select data elements that must not occur in normal content (prohibition) or mark an element as (non)separator by a flag. A schema can tell which separators to use at which places.

examples
  • Whitespace characters separate words.
  • Brackets and delimiters, such as {, [, (, ), ], } and ,, |, ;, : etc. are used as separators in JSON, INI, CSV and other data structuring languages. Similar characters are also popular for ad-hoc structuring of values, for instance to create lists and annotations.
  • ASCII defines four level separator characters (code 28 to 31).
  • Lines in conceptual diagrams are used as borders and connections.
counter examples

Being a separator is not an inherent property of a data element, so whitespace, brackets and delimiters may also occur as normal content.

difficulties
  • Parts of elements can be misread as separator and vice versa.
  • Most elements divided by separators are divided by separators on their parts. Such hierarchic embeddings can be read ambiguously (for instance "( { ) }").
  • It is not obvious whether separators indicate borders and connections between elements on the same level (for instance arrows in a diagram) or whether they also combine elements by subsumption (for instance subfield indicators).
  • In sequences it must be clear whether separators occur between, after, or before an element, otherwise one can unintentionally introduce empty elements, for instance by ending a comma-separated list with a comma.
related patterns
  • One can alternatively use data elements of known size so no explicit delimiters are needed.
  • Separators can simultaneously act as flag to indicate the type of a connection.
  • If the actual form of a separator does not matter, the separator element is an example of the garbage pattern.
implied patterns

An embedding gives context to separating elements and makes clear which data elements are actually separated and connected.