Jump to content

Read a configuration file: Difference between revisions

implement in nim-lang
(implement in nim-lang)
Line 2,811:
{{out}}
<pre>[[FULLNAME : Foo Barber], [FAVOURITEFRUIT : banana], [NEEDSPEELING : true], [OTHERFAMILY : [Rhu Barber, Harry Barber]]]</pre>
 
=={{header|Nim}}==
<lang Nim>import re, strformat, strutils, tables
var configs = newOrderedTable[string, seq[string]]()
var f = open("demo.config") ## shown above in description of the task
var parsed: seq[string]
 
for line in f.lines():
if not (line.startswith(re"#|;") or line.strip() == ""):
parsed = line.strip().split(re"\s*=\s*|\s+", 1)
if len(parsed) == 1:
configs[parsed[0].toLower()] = @[]
else:
configs[parsed[0].toLower()] = parsed[1].split(re"\s*,\s*")
f.close()
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}")
</lang>
{{out}}
<pre>
fullname = Foo Barber
favouritefruit = banana
needspeeling = true
seedsremoved = false
otherfamily(1) = Rhu Barber
otherfamily(2) = Harry Barber
</pre>
 
=={{header|OCaml}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.