The task is to read a configuration file in standard configuration file format,
and set variables accordingly.

For this task, we have a configuration file as follows:

# This is a configuration file in standard configuration file format
#
# Lines beginning with a hash or a semicolon are ignored by the application
# program. Blank lines are also ignored by the application program.

# This is the fullname parameter
FULLNAME Foo Barber

# This is a favourite fruit
FAVOURITEFRUIT banana

# This is a boolean that should be set
NEEDSPEELING

# This boolean is commented out
; SEEDSREMOVED

# Configuration option names are not case sensitive, but configuration parameter
# data is case sensitive and may be preserved by the application program.

# An optional equals sign can be used to separate configuration parameter data
# from the option name. This is dropped by the parser. 

# A configuration option may take multiple parameters separated by commas.
# Leading and trailing whitespace around parameter names and parameter data fields
# are ignored by the application program.

OTHERFAMILY Rhu Barber, Harry Barber



For the task we need to set four variables according to the configuration entries as follows:

fullname = Foo Barber
favouritefruit = banana
needspeeling = true
seedsremoved = false


We also have an option that contains multiple parameters. These may be stored in an array.

 otherfamily(1) = Rhu Barber
 otherfamily(2) = Harry Barber


Related tasks
 Update a configuration file


import re, strformat, strutils, tables
 
var configs: OrderedTable[string, seq[string]]
var parsed: seq[string]
 
for line in "demo.config".lines():
  let line = line.strip()
  if line != "" and not line.startswith(re"#|;"):
    parsed = line.split(re"\s*=\s*|\s+", 1)
    configs[parsed[0].toLower()] = if len(parsed) > 1: parsed[1].split(re"\s*,\s*") else: @[]
 
for key in ["fullname", "favouritefruit", "needspeeling", "seedsremoved", "otherfamily"]:
  if not configs.hasKey(key):
    echo(&"{key} = false")
  else:
    case len(configs[key])
    of 0:
      echo(&"{key} = true")
    of 1:
      echo(&"{key} = {configs[key][0]}")
    else:
      for i, v in configs[key].pairs():
        echo(&"{key}({i+1}) = {v}")