Read a configuration file: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring the hard way) |
(Replaced “f.lines” with “"demo.config.lines()” avoiding expliciting "f". Replaced the OrderedTableRef with an OrderedTable. Some other minor changes.) |
||
Line 3,116: | Line 3,116: | ||
=={{header|Nim}}== |
=={{header|Nim}}== |
||
<lang Nim>import re, strformat, strutils, tables |
<lang Nim>import re, strformat, strutils, tables |
||
var configs |
var configs: OrderedTable[string, seq[string]] |
||
var f = open("demo.config") ## shown above in description of the task |
|||
var parsed: seq[string] |
var parsed: seq[string] |
||
for line in |
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: @[] |
|||
else: |
|||
⚫ | |||
configs[parsed[0].toLower()] = parsed[1].split(re"\s*,\s*") |
|||
f.close() |
|||
⚫ | |||
"otherfamily"]: |
|||
if not configs.hasKey(key): |
if not configs.hasKey(key): |
||
echo(&"{key} = false") |
echo(&"{key} = false") |
||
Line 3,141: | Line 3,137: | ||
else: |
else: |
||
for i, v in configs[key].pairs(): |
for i, v in configs[key].pairs(): |
||
echo(&"{key}({i+1}) = {v}") |
echo(&"{key}({i+1}) = {v}")</lang> |
||
</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |